Llamar a ssh paralelo (pssh) en un script bash

Llamar a ssh paralelo (pssh) en un script bash

Puedo ejecutar comandos en paralelo en una lista de máquinas usando psshel comando. Por ejemplo, para crear una carpeta fooen varias máquinas, enumeradas en hosts.txtPuedo 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 foocongela 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

información relacionada