Eu conheço algumas ferramentas para isso, mas o mais fácil é o Fabric . Dê uma olhada e me diga o que você acha.
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
Eu conheço algumas ferramentas para isso, mas o mais fácil é o Fabric . Dê uma olhada e me diga o que você acha.
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" ...'
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]