循环中的ssh问题

时间:2009-11-26 07:17:03

标签: shell ssh

我有一个使用ssh连接到服务器的脚本。在循环中,连接到第一个服务器后无法连接到第二个服务器。我想我必须退出该服务器才能回到调用脚本。我该如何退出ssh会话?

while read dbname myip
do
ssh root@$myip "mysqldump - some command " | mysql -hhost -u -p myLocalDatabase > /dev/null 2>&1
done << iplist
db1 111.111.111.111
xyz 222.222.222.222
iplist

4 个答案:

答案 0 :(得分:3)

将stdin重定向到/ dev / null

while  read -r dbname myip
do
 0</dev/null ssh ...... <whatever> .........
done < "iplist"

答案 1 :(得分:1)

稍高的抽象级别,您可能会对以下内容感兴趣: Chef

  

Chef是一个系统集成框架,旨在为整个基础架构带来配置管理的优势。有了Chef,你可以:

     
      
  • 通过编写代码而不是运行命令来管理服务器。 (通过食谱)
  •   
  • 与您的应用程序,数据库,LDAP目录等紧密集成。 (通过图书馆)
  •   
  • 轻松配置需要了解整个基础架构的应用程序(“运行我的应用程序的系统是什么?”“当前的主数据库服务器是什么?”)
  •   

答案 2 :(得分:0)

如果要在多个SSH主机上发出相同的命令,可以使用DSH

  

dsh是执行多个远程shell(rsh / remsh / ssh)命令的包装器的实现。

答案 3 :(得分:0)

如果文件“dbname”中没有空格,可以使用:

for myip in $(cat dbname); do
   ...
done

(或使用面料:http://docs.fabfile.org/en/latest/