умереть при запросе пароля в Perl - PullRequest
2 голосов
/ 17 ноября 2010

У меня есть скрипт, который использует ключ ssh для подключения к удаленному серверу для конкретного пользователя. Однако, если информация о пользователе изменена, а ключи не обновлены, скрипт будет зависать в ожидании пароля.

Как я могу перехватить это и бросить DIE при запросе пароля?

Например, если я использую:

system("ssh -C USER@someserver.com -i /.ssh/USER.key ...");

и USER - это не то же самое USER в USER.key, оно зависает в ожидании пароля. Я бы предпочел, чтобы он умер.

Каков наилучший способ справиться с этим без использования модуля perl?

Ответы [ 3 ]

7 голосов
/ 17 ноября 2010

Попробуйте это:

system('ssh -o BatchMode=yes -C USER@someserver.com -i /.ssh/USER.key ...');

Опция BatchMode не позволяет ssh запрашивать пароли и просто прерывается, если требуется пароль.

4 голосов
/ 17 ноября 2010

Когда вы используете system таким образом, вы отказываетесь от управления до ssh.Я рекомендую вам взглянуть на опции для ssh.

Кроме того, вы должны использовать предупреждения .

0 голосов
/ 18 ноября 2010

Рассматривали ли вы использование каких-либо SSH-модулей, доступных в CPAN, как Net :: SSH2 или Net :: OpenSSH?

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