Alterar senha em vários servidores com chpasswd

0

Eu gostaria de alterar o passwd em vários servidores usando um loop for.

O problema é que eu tenho que digitar sudo passwd para cada servidor (100 +)

Este é o comando que tenho, mas não está funcionando,

for i in 'cat hosts'
do
    ssh user@${i} 'echo user:newpassword | 
                    sudo -S  <<< "sudopasswd" /usr/sbin/chpasswd'
done

Qualquer ajuda seria felizmente recebida.

Obrigado

    
por Christian Watts 04.08.2017 / 13:43

1 resposta

2

Seus redirecionamentos de entrada e strings aqui são colocados incorretamente. Você está dando a string aqui "sudopasswd" para a entrada padrão de sudo -S , que tem precedência sobre a saída de eco (que se perde desta forma).

O que você pode fazer é deixar sudo iniciar um shell Bash e executar o fluxo echo e chpasswd , separando-os do restante:

ssh user@${i} 'sudo -S  <<< "sudopasswd" /bin/bash -c "echo user:newpassword |
                                                        /usr/sbin/chpasswd"'
    
por Byte Commander 04.08.2017 / 14:18