Змінення пароля на декількох серверах за допомогою chpasswd


0

Я хотів би змінити passwd на декількох серверах, використовуючи цикл for.

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

Це команда, яку я маю, але вона не працює,

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

Будь-яка допомога буде щасливо отримана.

Дякую


Я пропоную використовувати ansible для цього виду робіт
luv.preet

Відповіді:


2

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

Що ви можете зробити, це дозволити sudoзапустити оболонку Bash і запустити туди echoі chpasswdконвеєр там, відокремивши їх від решти:

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

Ви, сер, мій герой: D
Крістіан Воттс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.