sudo по ssh — зависает, когда пароль не принят

#ssh #sudo

#ssh #sudo

Вопрос:

Чтобы проверить, есть ли у пользователя sudo (сразу на нескольких серверах), я использую следующую команду: echo -e "$Password" | ssh -tt -q $Username@$Server "sudo -S -p '' echo ok" 2>amp;1 Этот подход, похоже, работает, но только в том случае, если пароль принят. Если у вас (по какой-либо причине) снова запрашивают пароль, команда зависает, а вместе с ней и весь скрипт. Есть ли способ принудительно завершить выполнение этой команды, если пароль не принят?

Ответ №1:

Команда не зависает. Он ожидает.

Вы указали, что sudo команда должна считывать пароль из stdin ( -S ) и не запрашивать у пользователя ввод пароля ( -p '' ). Если вы введете неправильный пароль, sudo будет ждать повторной попытки — по умолчанию три раза.

Я не могу найти какой-либо опции для sudo — ни в командной строке, ни в sudo.conf файле конфигурации — которая позволит вам запросить пароль только один раз, а затем выйти.