Пароль изменения на нескольких серверах с chpasswd

Я хотел бы изменить passwd на нескольких серверах с помощью для цикла.

Проблема, я должен ввести sudo passwd для каждого сервера (100 +)

Это - команда, которую я имею, но она не работает,

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

Любая справка была бы счастливо получена.

Спасибо

0
задан 4 August 2017 в 05:08

1 ответ

Ваши перенаправления ввода и здесь-строки помещаются неправильно. Вы даете здесь-строку "sudopasswd" стандартному входу sudo -S, который имеет приоритет по передаче по каналу вывода эха (который теряется этот путь).

То, что можно сделать, должно позволить sudo запустите оболочку Bash и работайте echo и chpasswd конвейерно обработайте там, разделив их от остальных:

ssh user@${i} 'sudo -S  <<< "sudopasswd" /bin/bash -c "echo user:newpassword |
                                                        /usr/sbin/chpasswd"'
2
ответ дан 2 November 2019 в 20:29

Другие вопросы по тегам:

Похожие вопросы: