ノードにsshしてコマンドを実行して終了します。これはすべてのnodに対して繰り返されます。スクリプトはsshを実行してコマンドを実行するbashスクリプト
#!/bin/bash
NODES="compute-0-0 compute-0-1 compute-0-2 compute-0-3"
for i in $NODES
do
ssh $i
ls -l /share/apps
rpm -ivh /share/apps/file.rpm
exit
done
非常に簡単です。しかし問題は、SSH後、ls -l
コマンドが見逃している、ということです。したがって、コマンドプロンプトは入力を待機します。
これを修正する方法はありますか?
UPDATE:
私は
ssh $i <<END
ls -l /share/apps
exit
END
として、ループ本体を変更しかし、私は、スクリプトを変更したいとするコマンドでssh
コマンドを実行します
./lst.sh: line 9: warning: here-document at line 5 delimited by end-of-file (wanted `END')
./lst.sh: line 10: syntax error: unexpected end of file
がhttp://stackoverflow.com/questions/37586811/pass-commands-as-input-to-another-command-su-ssh-sh-etc – Leon
を参照してください試してみてくださいスクリプトの 'ssh'セクションをインデントするには' << - END'を使用してください – Leon
あなたが受け入れた答えはうまくいくはずです。しかし、あなたのhere-docのアプローチも間違っていませんでした。私は、 'exit'行の後に' END'の前にスペースを追加したと思います。また、インデントのためにこれらのスペースをwntした場合は、heredoc行を 'ssh $ i << - END'に変更してください(' << 'の代わりに' << - ') – anishsane