【发布时间】:2016-11-09 10:39:09
【问题描述】:
我想 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 命令丢失了。因此,命令提示符等待输入!
有什么办法解决吗?
更新:
我将循环体修改为
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
【问题讨论】:
-
如果您希望脚本的
ssh部分缩进,请使用<<-END -
您接受的答案应该有效。但是,您的 here-doc 方法也没有错。我想,您在
END之前在exit行之后添加了一些空格。或者,如果您不想使用这些空格进行缩进,请将heredoc 行更改为ssh $i <<-END(注意<<-运算符而不是<<)