Execução paralela do script sh em vários servidores [duplicado]

5

Estou tentando executar ações em vários servidores no meu loop, mas gostaria de iniciar minhas ações no primeiro servidor e ir diretamente para o segundo sem esperar que o primeiro complemente.

HOSTS="host1 host2"
    For hostname in ${HOST} ;
do ssh -tt ${USERNAME}@${hostname} << EOF
actions
exit
EOF
Done 

Alguém tem uma idéia de fazer isso no linux sh bash?

Obrigado antecipadamente.

    
por Issam 27.10.2016 / 11:55

2 respostas

1

pdsh parece atender às suas necessidades. Executa conexões ssh em paralelo, de maneira multiencadeada.

Exemplo:

$ pdsh -w 192.168.1.4,192.168.1.250 uname -r
192.168.1.4: 2.6.32-431.17.1.el6.x86_64
192.168.1.250: 2.6.32-431.11.2.el6.x86_64
$

Conector paralelo com pdsh

Como posso enviar um único arquivo para vários sites remotos ao mesmo tempo?

    
por 27.10.2016 / 15:21
1

Use o Paralelo GNU:

parallel -S host1,host2 --nonall uname -a

Se a tarefa for mais complexa, faça uma função:

do_actions() {
   action
   packed
   function
}
export -f do_actions
HOSTS="host1,host2"
parallel -S $HOSTS --ssh 'ssh -l '$USERNAME --nonall --env do_actions do_actions

Se o nome de usuário for igual a whoami , isso é suficiente:

parallel -S $HOSTS --nonall --env do_actions do_actions

O GNU Parallel não precisa ser instalado globalmente: se não for instalado, você pode fazer uma instalação pessoal.

wget pi.dk/3
bash 3
    
por 27.10.2016 / 18:48