
Preciso executar localmente um script que se conecte a vários servidores e execute comandos neles. Qual é o melhor jeito de concluir isso?
Responder1
Pessoalmente, eu usariaCapistrano. É amigável e escrito em Ruby e eles já fizeram todo o trabalho pesado para você.
Da Wikipédia:
Capistrano é um utilitário e framework para execução de comandos em paralelo em múltiplas máquinas remotas, via SSH.
Responder2
você pode executar um comando usando ssh hostname command
. Se você tiver um script inteiro que precisa executar, primeiro use scp para transferi-lo para o host remoto e depois ssh para executá-lo.
scp script.sh host:script.sh
ssh host ./script.sh
Responder3
Que tal usar o gerenciamento de configuração comofantocheouchefe de cozinha? Talvez isso seja um pouco exagerado para apenas um script, mas se você precisar de vários desses scripts, talvez valha a pena considerar.
Responder4
Um loop 'for' rápido pode ser mais fácil, talvez algo como:
for h in host1 host2 host3
do
echo $h
ssh user@$h "ps -ef"
done
Claro, cfengine/puppet/chef/capistrano são melhores opções de gerenciamento de configuração. Se você quiser enviar comandos interativamente para vários shells, clusterm (http://sourceforge.net/projects/clusterm/) também é uma escolha sólida.