我有一个使用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
答案 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