Executando comandos em vários servidores [duplicados]

4

Eu quero executar um processo em vários servidores. Eu estou usando o seguinte script de wrapper. O script é movido para servidores, um de cada vez. Eu gostaria de mudá-lo para que ele possa ser executado em vários servidores. Existe maneira de fazer isso?

#!/bin/bash
for ip in $(<ALL_SERVERS_IP); do
    # Tell the remote server to start bash, but since its
    # standard input is not a TTY it will start bash in
    # noninteractive mode.
    ssh -q "$ip" bash <<-'EOF'
        printf "%s\n" ================== "$(hostname) ::: Current date : $(date)" \
                            ==================
        ./remote 
    EOF
done
    
por user67186 21.08.2014 / 18:52

3 respostas

0

Eu conheço algumas ferramentas para isso, mas o mais fácil é o Fabric . Dê uma olhada e me diga o que você acha.

    
por 21.08.2014 / 20:16
2

Sim. Tente pdsh , que executará um comando em vários hosts remotos simultaneamente. Sua tarefa poderia ser escrita assim:

pdsh -w ssh:$(echo $(<ALL_SERVERS) | sed -e 's/ /,/g') 'printf "%s\n" ...'
    
por 21.08.2014 / 19:12
2

Parece que você está procurando pelo Paralelo GNU . Isso é exatamente o que foi escrito. No seu caso, você faria:

parallel ./remote --sshloginfile ALL_SERVERS_IP

O acima assume que ALL_SERVERS_IP é um arquivo de texto com um IP ou nome de host por linha. Se eles podem ter logins diferentes, faça a lista da seguinte forma:

[email protected]
[email protected]
[email protected]
    
por 21.08.2014 / 19:31