【问题标题】:bash script to ssh and run commandsbash 脚本到 ssh 并运行命令
【发布时间】: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 部分缩进,请使用&lt;&lt;-END
  • 您接受的答案应该有效。但是,您的 here-doc 方法也没有错。我想,您在END 之前在exit 行之后添加了一些空格。或者,如果您不想使用这些空格进行缩进,请将heredoc 行更改为ssh $i &lt;&lt;-END(注意&lt;&lt;- 运算符而不是&lt;&lt;

标签: bash ssh


【解决方案1】:

标识是此类脚本中的所有内容,一个示例 bash 脚本,用于 ssh 到不同的服务器并在它们上执行操作:

#!/bin/bash
NODES="user@prod-work01.server.com user@prod-work02.server.com user@prod-work03.server.com user@prod-work04.server.com user@prod-work05.server.com user@prod-work06.server.com user@prod-work07.server.com user@prod-work08.server.com"
for i in $NODES
do
  echo "SSHing..."
  echo $i
ssh $i << EOF
  cd /home/user/server.com/current/
  bundle exec eye stop all
  echo "Some Process Stopped Successfully!"
EOF

done

【讨论】:

    【解决方案2】:

    试试这个

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

    【讨论】:

      【解决方案3】:

      我会更改脚本并运行 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
      

      &amp;&amp; 操作符意味着每个命令只有在前一个命令成功时才会执行。

      如果要独立运行命令,可以将&amp;&amp; 运算符改为;

      【讨论】:

        猜你喜欢
        • 2015-05-29
        • 1970-01-01
        • 2016-11-15
        • 2011-06-21
        • 2019-05-18
        • 2012-08-24
        • 2014-12-13
        • 2011-05-31
        相关资源
        最近更新 更多