Я хотел бы изменить passwd на нескольких серверах, используя цикл for.
Проблема. Мне нужно ввести sudo passwd для каждого сервера (100 +)
. Это команда, которую я имею, но она не работает,
for i in `cat hosts`
do
ssh user@${i} 'echo user:newpassword |
sudo -S <<< "sudopasswd" /usr/sbin/chpasswd'
done
Любая помощь будет с радостью получена.
Спасибо
Ваши перенаправления ввода и здесь строки помещены неправильно. Вы даете здесь строку «sudopasswd» на стандартный вход sudo -S, который имеет приоритет над конвейером вывода эха (который теряется таким образом).
Что вы можете сделать, так это позволить [ f3] запустите оболочку Bash и запустите там конвейер echo и chpasswd, отделив их от остальных:
ssh user@${i} 'sudo -S <<< "sudopasswd" /bin/bash -c "echo user:newpassword |
/usr/sbin/chpasswd"'
Ваши перенаправления ввода и здесь строки помещены неправильно. Вы даете здесь строку «sudopasswd» на стандартный вход sudo -S, который имеет приоритет над конвейером вывода эха (который теряется таким образом).
Что вы можете сделать, так это позволить sudo запустите оболочку Bash и запустите там конвейер echo и chpasswd, отделив их от остальных:
ssh user@${i} 'sudo -S <<< "sudopasswd" /bin/bash -c "echo user:newpassword |
/usr/sbin/chpasswd"'
Ваши перенаправления ввода и здесь строки помещены неправильно. Вы даете здесь строку «sudopasswd» на стандартный вход sudo -S, который имеет приоритет над конвейером вывода эха (который теряется таким образом).
Что вы можете сделать, так это позволить sudo запустите оболочку Bash и запустите там конвейер echo и chpasswd, отделив их от остальных:
ssh user@${i} 'sudo -S <<< "sudopasswd" /bin/bash -c "echo user:newpassword |
/usr/sbin/chpasswd"'