Alguna vez nos puede suceder que queramos incluír el comando ssh en un bucle para ejecutar una tarea en una serie de máquinas.
Para ello podemos utilizar "while read...", pero cuando hacemos efectivamente el script podemos ver que se ejecuta en la primera máquina y no se ejcuta en las demás:
# while read server; do
ssh $server 'uptime'
done < list
La razón es que while lee de la entrada estándar (stdin) y el comando ssh toma el control de la entrada estándar, de manera que estropea el bucle que se está haciendo. Añadiendo la opción -n antes del comando ssh redirecciona a la entrada estándar que espera ssh de /dev/null, previniendo que ssh estropee el bucle.
De este modo el comando correcto que funcionaría sería:
# while read server; do
ssh -n $server 'uptime'
done < list
1 comentario:
Fiuu, gracias!
Solo me lo hacía en una máquina y me estaba volviendo loco.
Publicar un comentario