用于ssh和运行命令的bash脚本

时间:2016-07-07 07:36:00

标签: bash ssh

我想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

2 个答案:

答案 0 :(得分:1)

我更改脚本并使用要执行的命令运行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

&&运算符表示只有在上一个命令成功时才会执行每个命令。

如果您想独立运行命令,可以将&&运算符更改为;

答案 1 :(得分:1)

试试这个

    #!/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