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