Puedo ejecutar comandos en paralelo en una lista de máquinas usando pssh
el comando. Por ejemplo, para crear una carpeta foo
en varias máquinas, enumeradas en hosts.txt
Puedo ejecutar:
pssh -h hosts.txt -l MyUserName "mkdir foo"
Pero como el comando requiere más argumentos (es decir, usar una clave pública para la autenticación, etc.), intenté crear el siguiente script bash bar.sh
, de modo que el comando que quiero ejecutar simplemente se proporcione como argumento del script:
#!/bin/bash
pssh -h hosts.txt -l MyUserName "$@"
Pero ejecutarlo bar.sh mkdir foo
congela el terminal, ni siquiera yo puedo matarlo usando Ctrl+C.
¿Algunas ideas?
Respuesta1
No estoy muy familiarizado con pssh
. ¿Recibe el mismo error si usa GNU Parallel?
#!/bin/bash
parallel -j10 --slf hosts.txt --nonall "$@"
Pon el nombre de usuario en hosts.txt:
myuser@host1
myuser@host2
Respuesta2
Es necesario utilizar -i (salida agregada en línea y error para cada servidor), lo siguiente funcionará:
pssh -h pssh.txt -l root -i uptime