コマンドは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で呼び出すということは、実行可能ファイルに からの何かが必要である-lことを示しているようです。 よりハッキングの少ない解決策を作成するには、そこを確認するとよいでしょう。o3d3xx-reboot/etc/profile

答え2

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

環境変数が不足していたため、スクリプトが機能しなかったようです。ログインしてコマンドを手動で入力した場合と同じように環境をロードする上記のスクリプトを使用しました。

関連情報