Изменение пароля на нескольких серверах с помощью chpasswd

Я хотел бы изменить passwd на нескольких серверах, используя цикл for.

Проблема. Мне нужно ввести 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 в 15:08

3 ответа

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

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

ssh user@${i} 'sudo -S  <<< "sudopasswd" /bin/bash -c "echo user:newpassword |
                                                        /usr/sbin/chpasswd"'
2
ответ дан 22 May 2018 в 19:49

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

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

ssh user@${i} 'sudo -S <<< "sudopasswd" /bin/bash -c "echo user:newpassword | /usr/sbin/chpasswd"'
2
ответ дан 18 July 2018 в 09:04

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

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

ssh user@${i} 'sudo -S <<< "sudopasswd" /bin/bash -c "echo user:newpassword | /usr/sbin/chpasswd"'
2
ответ дан 24 July 2018 в 19:14

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

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