Я хотел бы изменить passwd на нескольких серверах с помощью для цикла.
Проблема, я должен ввести 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
, который имеет приоритет по передаче по каналу вывода эха (который теряется этот путь).
То, что можно сделать, должно позволить sudo
запустите оболочку Bash и работайте echo
и chpasswd
конвейерно обработайте там, разделив их от остальных:
ssh user@${i} 'sudo -S <<< "sudopasswd" /bin/bash -c "echo user:newpassword |
/usr/sbin/chpasswd"'