Eu tenho um arquivo servers.txt
, com lista de servidores:
server1.mydomain.com
server2.mydomain.com
server3.mydomain.com
quando leio o arquivo linha por linha com while
e ecoo cada linha, tudo funciona conforme o esperado. Todas as linhas são impressas.
$ while read HOST ; do echo $HOST ; done < servers.txt
server1.mydomain.com
server2.mydomain.com
server3.mydomain.com
No entanto, quando eu quero ssh para todos os servidores e executar um comando, de repente meu while
loop para de funcionar:
$ 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
Isso se conecta apenas ao primeiro servidor da lista, não a todos eles. Eu não entendo o que está acontecendo aqui. Alguém pode me explicar?
Isso é ainda mais estranho, pois o uso de for
loop funciona bem:
$ for HOST in $(cat servers.txt ) ; do ssh $HOST "uname -a" ; done
Linux server1 2.6.30.4-1 #1 SMP Wed Aug 12 19:55:12 EDT 2009 i686 GNU/Linux
Linux server2 2.6.30.4-1 #1 SMP Wed Aug 12 19:55:12 EDT 2009 i686 GNU/Linux
Linux server3 2.6.30.4-1 #1 SMP Wed Aug 12 19:55:12 EDT 2009 i686 GNU/Linux
Deve ser algo específico ssh
, porque outros comandos funcionam bem, como ping
:
$ while read HOST ; do ping -c 1 $HOST ; done < servers.txt
ansible