相关疑难解决方法(0)

使用 while 循环 ssh 到多个服务器

我有一个文件servers.txt,其中包含服务器列表:

server1.mydomain.com
server2.mydomain.com
server3.mydomain.com
Run Code Online (Sandbox Code Playgroud)

当我逐行读取文件while并回显每一行时,一切都按预期工作。打印所有行。

$ while read HOST ; do echo $HOST ; done < servers.txt
server1.mydomain.com
server2.mydomain.com
server3.mydomain.com
Run Code Online (Sandbox Code Playgroud)

但是,当我想通过 ssh 连接到所有服务器并执行命令时,我的while循环突然停止工作:

$ while read HOST ; do ssh $HOST "uname -a" ; done < servers.txt
Linux server1 2.6.30.4-1 #1 SMP Wed Aug 12 19:55:12 EDT 2009 i686 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

这仅连接到列表中的第一台服务器,而不是所有服务器。我不明白这里发生了什么。有人可以解释一下吗?

这更奇怪,因为使用for循环工作正常:

$ for HOST in $(cat servers.txt ) ; do ssh $HOST "uname -a" ; done
Linux server1 2.6.30.4-1 #1 SMP …
Run Code Online (Sandbox Code Playgroud)

scripting ssh io-redirection

95
推荐指数
3
解决办法
20万
查看次数

标签 统计

io-redirection ×1

scripting ×1

ssh ×1