Перенаправление ввода пароля в Perl-скрипте из командной строки

#perl #svn #batch-file

#perl #svn #пакетный файл

Вопрос:

Я использую системную командную строку Windows для вызова скрипта Perl. В какой-то момент времени Perl-скрипт вызывает svn ssh обновление репозитория. Вызываемый репозиторий запрашивает ввод пользователя, в частности, пароль.

Я пытаюсь автоматизировать выполнение скрипта Perl, но он постоянно зависает при вызове svn. Я перепробовал много форм перенаправления ввода (в частности < , с помощью внешнего файла, | с cat , и Windows power shell использует символ @ для указания многострочной строки). Есть ли способ ввести пароль для этого скрипта Perl?

Для решения этой проблемы у меня нет доступа к скрипту Perl, и мне нужно будет выполнить обходной путь.

Комментарии:

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

Ответ №1:

Вы не упоминаете реализацию svn ssh, которую использует скрипт, но я предполагаю, что проблема заключается в следующем:

SSH-клиенты, как правило, запрашивают пароли непосредственно с терминала. Запросы на ввод пароля часто не считываются из stdin, поэтому вы не можете перенаправить ввод. Например, клиент OpenSSH делает это таким образом. Он разработан таким образом, чтобы пользователи не могли выполнять небезопасные действия, такие как хранение паролей в файлах, переменных среды или переменных оболочки.

Общая рекомендация в этой ситуации — использовать аутентификацию с открытым ключом.

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

Комментарии:

1. Вы были правы — метод, который я аутентифицировал, был неверным. Но мне любопытно, откуда тогда считываются пароли, если не STDIN…

2. Ну, они считываются непосредственно с терминала… В Windows, вероятно, используя это: msdn.microsoft.com/en-us/library/ms684958(v=VS.85).aspx (Функция API ReadConsole())