我們在 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'";
似乎缺少環境變量,因此腳本不起作用。我使用上面的腳本加載環境,就像我登入並手動鍵入命令一樣。