usando ssh e executando um script em segundo plano

4

Estou executando um trabalho que leva cerca de 20 minutos em cada servidor. No entanto, todos os servidores podem executar este trabalho ao mesmo tempo. Aqui está o meu trabalho:

#cat mylist

server1
server2
...
...

#for i in 'mylist'; do ssh root@$i /home/run_command ; done

Funciona bem, mas precisa terminar o trabalho em cada servidor antes de passar para o próximo servidor.

Eu tentei adicionar &

for i in 'mylist'; do ssh root@$i /home/run_command & ; done

Não fez diferença. Agradeço qualquer informação que você possa compartilhar comigo.

    
por tester787 17.08.2015 / 19:36

1 resposta

6

Você pode dizer a ssh para ir para o segundo plano com -f , então fazer algo como

for i in $(cat mylist); do
    ssh -f root@$i /home/run_command
done

Como Alex Stragies apontou, isso permitirá que você insira senhas para hosts conforme necessário, mas se você tiver uma lista longa, esperamos que você use a autenticação de chave pública para seu próprio bem.

    
por 17.08.2015 / 19:43

Tags