Tengo un archivo servers.txt
, con una lista de servidores:
server1.mydomain.com
server2.mydomain.com
server3.mydomain.com
cuando leo el archivo línea por línea con while
y hago eco de cada línea, todo funciona como se esperaba. Todas las líneas están impresas.
$ while read HOST ; do echo $HOST ; done < servers.txt
server1.mydomain.com
server2.mydomain.com
server3.mydomain.com
Sin embargo, cuando quiero ssh a todos los servidores y ejecutar un comando, de repente mi while
ciclo deja 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
Esto solo se conecta al primer servidor de la lista, no a todos. No entiendo lo que está pasando aquí. ¿Alguien puede explicar?
Esto es aún más extraño, ya que usar el for
bucle funciona bien:
$ 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
Debe ser algo específico para ssh
, porque otros comandos funcionan bien, como ping
:
$ while read HOST ; do ping -c 1 $HOST ; done < servers.txt
ansible