У меня есть скрипт, который выполняет одни и те же команды на нескольких серверах через SSH.

spawn ssh [lindex $argv 0]
send "sudo /usr/sbin/useradd ytkatchen"
expect "password:"
send "Unix\@999\r"

Мой пароль не одинаков / одинаков для всех серверов. У меня есть 2 разных пароля для длинного списка серверов.

Мое требование заключается в том, что скрипт должен установить ssh-соединение и использовать правильный действительный пароль для продолжения работы.

Он не должен выполняться, если пароль неправильный, скорее он должен попробовать другой пароль и продолжать.

2 ответа2

1

Проще всего было бы использовать ssh-ключи вместо паролей.

Вы можете сгенерировать пару ключей ssh для каждого сервера и использовать их для автоматического подключения без использования паролей.

Это также лучше для безопасности, так как вам не нужно запрашивать или хранить пароль с вашим скриптом.

0

Вы можете настроить sudo пароля на своих серверах, чтобы вам не приходилось беспокоиться о вводе паролей. Краткое руководство:

$ sudo visudo

Добавьте новую строку в конец файла:

EditThisToYourUsername ALL=(ALL) NOPASSWD:ALL

Обратите внимание: это символ табуляции между Имя пользователя и ВСЕ.

Сохраните файл (Escape,:x, Enter).

Другое решение - вы можете прослушать код выхода вашей команды sudo чтобы узнать, верен ли введенный вами пароль или нет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .