Você pode usar a ferramenta expect para executar comandos em vários hosts em lotes. expect é uma ferramenta para automatizar interações que simula entradas e respostas do usuário. Veja a seguir um exemplo de script de shell simples que demonstra como usar o comando expect para executar comandos em vários hosts em lotes:
#!/usr/bin/expect
set username "your_username"
set password "your_password"
set command "your_command"
set hosts {
"host1" "192.168.1.1"
"host2" "192.168.1.2"
"host3" "192.168.1.3"
}
foreach {host ip} $hosts {
spawn ssh $username@$ip
expect {
"*password:" {
send "$password\r"
expect "*$ "
send "$command\r"
expect "*$ "
send "exit\r"
}
}
}
No script acima, você precisa substituir "your_username" e "your_password" por seu nome de usuário e senha reais. "your_command" é o comando a ser executado no host.
A variável hosts é uma lista contendo nomes de host e endereços IP. Você pode adicionar ou remover hosts conforme necessário ou carregar a lista de hosts de outro local.
O loop foreach no script percorre a lista de hosts e usa o comando spawn para iniciar uma nova sessão ssh em cada host. O comando expect é usado para combinar diferentes cenários de interação. Ao encontrar " password:", o script enviará automaticamente a senha e aguardará o prompt de comando (" $ ") aparecer. O script então envia o comando a ser executado e novamente aguarda o prompt de comando. Por fim, o script envia o comando "exit" para sair da sessão ssh.
Ao modificar apropriadamente as variáveis e os comandos no script, você pode executar comandos personalizados em vários hosts em lotes.
Deve-se observar que senhas e informações confidenciais precisam ser tratadas com cuidado ao usar a ferramenta expect. Recomenda-se tomar medidas de segurança durante o uso real, como usar chaves SSH para autenticação para evitar o risco de divulgação de senha.
Espero que os exemplos acima possam ajudá-lo a entender como usar a ferramenta expect para executar comandos em vários hosts em lotes. De acordo com as necessidades reais, você pode personalizar e estender este exemplo.