1
我想ssh到一個節點並在那裏運行一個命令,然後退出。所有點頭都重複了這一點。該腳本是相當簡單的bash腳本ssh並運行命令
#!/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
,但我得到
./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
您接受的答案應該可行。但是,你的在線文件方式也沒有錯。我想,你已經在'exit'行之後的'END'之前添加了一些空格。或者,如果您將這些空格用於縮進,請將heredoc行更改爲'ssh $ i << - END'(注意'<< - '運算符而不是'<<) – anishsane