Ssh-serverでコマンドを実行したいのですが、このコマンドはローカルマシンのスクリプトによって決定されます。それ、どうやったら出来るの?
明確にするための例:
ここで、引数を取るスクリプト(foo.sh)を書きたいと思います。 ./foo.sh 0
を実行すると、何らかの理由でサーバーマシンにシャットダウン信号が送信されますが、./foo.sh 1
を実行すると、再起動信号が送信されます。
私は手動でssh経由でログインする方法を知っていて、パスワードをスキップするようにssh-keysをすでに設定しましたが、スクリプトで手順を自動化する方法がわかりません。
Oliがコメントしたように、コマンドを送信するようにSSHに指示できます。コマンドライン引数が1の場合、ssh user@server "shutdown -h now"
を送信するようにスクリプトを変更できます。シャットダウンするには、他のマシンでスーパーユーザーになる必要があることに注意してください。
EDIT:コメントに示されているように、パスワードを使用せずにマシンをシャットダウンできるようにuser
をsudoersファイルに入れて、ルートを使用する代わりに。
次のようなコマンド(または;
で区切られたコマンドのリスト)をSSH接続に渡すことができます。
ssh user@server-address "./foo 1"
0
または1
を出力するローカルスクリプトがある場合は、さらに単純化できます。
ssh user@server-address "./foo `/path/to/your/script`"
バックティックのコードは他の何かの前に実行され、その出力は動的に行に入れられます。