Я пытаюсь получить скрипт, который работает как в родной оболочке Windows, так и в оболочке cygwin (через ssh), которая запрашивает и читает пароль, введенный пользователем. До сих пор я пробовал следующие методы:
- используя Term :: ReadKey и устанавливая ReadMode в 'noecho'
- РЕЗУЛЬТАТ: возвращает ошибку
GetConsoleMode failed
и завершает работу
- с использованием Term :: ReadPassword :: Win32
- РЕЗУЛЬТАТ: зависает и никогда не предлагает приглашение или читает ввод
- с использованием IO :: Prompt
- РЕЗУЛЬТАТ: возвращает ошибку
Cannot write to terminal
и завершает работу
- используя Term :: InKey
- RESULT: возвращает ошибку
Not implemented on MSWin32: The handle is invalid
и завершает работу
Все это работает в собственной оболочке Windows (командная строка или командная оболочка), но ни одна из них не работает, когда я нахожусь в сеансе ssh с сервером.
На самом деле, это то, что меня больше всего интересует, заставить его работать в удаленной сессии ssh.
Я получаю ssh через cygwin, установленный на сервере Windows (2003 R2). Я использую клубничный Perl, а не Cygwin Perl (Cygwin Perl ломает другие Perl-скрипты, которые мне нужно запускать в Windows, а не через ssh).
Мое лучшее предположение - то, что cygwin + Windows работает с клубничным Perl настолько, что не может определить, в какой среде он находится. Я изучаю альтернативные решения sshd + для Windows, чтобы изучить это.
Это все методы, которые я смог найти в своем поиске. У кого-нибудь еще есть какие-либо другие способы скрыть пользовательский ввод, которые они могут предложить?