命令在 bash 中手動運行,但在腳本中不起作用

命令在 bash 中手動運行,但在腳本中不起作用

我們在 Windows 10 上使用 Powershell 版本 5.1.18362.1171。

如果我們執行以下命令:

ssh -i id_rsa [email protected] 'exec bash -l';

然後在開啟的 bash 控制台中手動執行此命令:

/usr/bin/o3d3xx-reboot

該腳本正常運行,沒有錯誤,並最終重新啟動。但是,如果我們嘗試使用下面的程式碼自動執行此程式碼,它總是會因重新啟動腳本內的某些錯誤而失敗:

ssh -i id_rsa [email protected] '/usr/bin/o3d3xx-reboot';

有沒有辦法無需手動輸入即可運行此腳本/二進位文件,就像在第一個版本中的工作方式一樣?

答案1

除非您向我們提供描述為什麼沒有重新啟動的日誌文件,否則很難猜測問題是什麼。

您可以透過在 ssh 中呼叫 bash、執行命令並立即終止 ssh 連線來解決該問題,如下所示:

ssh you@yourserver "bash --rcfile <(echo '. ~/.bashrc; /usr/bin/o3d3xx-reboot; exit') -l"

bash您調用with的事實-l似乎表明您的o3d3xx-reboot可執行檔需要來自 的某些內容/etc/profile。您可能想在那裡找到一個不那麼麻煩的解決方案。

答案2

ssh -i id_rsa myuser@myip "bash --login -c 'cd /usr/bin/ && o3d3xx-reboot && exit'";

似乎缺少環境變量,因此腳本不起作用。我使用上面的腳本加載環境,就像我登入並手動鍵入命令一樣。

相關內容