Chamando ssh paralelo (pssh) no script bash

Chamando ssh paralelo (pssh) no script bash

Posso executar comandos em paralelo em uma lista de máquinas usando pssho comando. Por exemplo, para criar uma pasta fooem várias máquinas, listadas em hosts.txtPosso executar:

pssh -h hosts.txt -l MyUserName "mkdir foo"

Mas como o comando requer mais argumentos (ou seja, usando chave pública para autenticação, etc.), tentei criar o seguinte script bash bar.sh, de forma que o comando que desejo executar seja simplesmente fornecido como argumento para o script:

#!/bin/bash
pssh -h hosts.txt -l MyUserName "$@"

Mas correr bar.sh mkdir foocongela o terminal, mesmo eu não consigo matá-lo usando Ctrl+C.

Alguma ideia?

Responder1

Eu não estou muito familiarizado com pssh. Você recebe o mesmo erro ao usar o GNU Parallel:

#!/bin/bash
parallel -j10 --slf hosts.txt --nonall "$@"

Coloque o nome de usuário em hosts.txt:

myuser@host1
myuser@host2

Responder2

É necessário usar -i (saída agregada inline e erro para cada servidor), abaixo funcionará:

pssh -h pssh.txt -l root -i uptime

informação relacionada