Se você tem que gerenciar centenas de servidores Linux, você deve usar uma ferramenta de gerenciamento de configuração para executar essas tarefas. Uma ferramenta de gerenciamento de configuração muito simples é ansible, o único requisito para o sistema gerenciado é o python 2.4 ou mais ( link ).
Seu problema foi resolvido com ansible:
1) Defina uma lista de hosts que você pode definir uma senha padrão para todos os hosts e outra senha para alguns hosts
[hosts_list]
172.17.0.101 ansible_ssh_user=root ansible_ssh_pass=password
172.17.0.102 ansible_ssh_user=root ansible_ssh_pass=oldpassword
172.17.0.103
172.17.0.104
[hosts_list:vars]
ansible_ssh_user=root ansible_ssh_pass=default_password
2) Defina um playbook simples contendo as tarefas que você deseja executar nos nós gerenciados
root@node1:~# cat play.yoman
---
- hosts: hosts_list
tasks:
- name: "Build hosts file"
copy: src=/root/yoman.txt dest=/tmp/felixtemp owner=user group=adm mode=0755
3) Execute o manual e verifique o resultado
root@node1:~# ansible-playbook -i hosts_list play.yoman
PLAY [hosts_list] *************************************************************
GATHERING FACTS ***************************************************************
fatal: [172.17.0.104] => SSH encountered an unknown error during the connection. We recommend you re-run the command using -vvvv, which will enable SSH debugging output to help diagnose the issue
fatal: [172.17.0.103] => SSH encountered an unknown error during the connection. We recommend you re-run the command using -vvvv, which will enable SSH debugging output to help diagnose the issue
ok: [172.17.0.101]
fatal: [172.17.0.102] => Authentication failure.
TASK: [Build hosts file] ******************************************************
ok: [172.17.0.101]
PLAY RECAP ********************************************************************
to retry, use: --limit @/root/play.yoman.retry
172.17.0.101 : ok=2 changed=0 unreachable=0 failed=0
172.17.0.102 : ok=0 changed=0 unreachable=1 failed=0
172.17.0.103 : ok=0 changed=0 unreachable=1 failed=0
172.17.0.104 : ok=0 changed=0 unreachable=1 failed=0
Você obtém a lista de servidores em que a tarefa foi executada e a lista de servidores em que a tarefa falha com os motivos (servidor inacessível ou senha incorreta). Você também obtém o subconjunto do servidor onde o arquivo, sua permissão e seu conteúdo não foram alterados porque já estão atualizados