隐藏用户输入

sgs*_*sax 8 windows ssh perl hidden cygwin

我正在尝试获取一个脚本,该脚本在本机Windows shell和cygwin shell(通过ssh)中都有效,它提示并读取用户输入的密码.到目前为止,我尝试了以下方法:

  1. 使用Term :: ReadKey并将ReadMode设置为'noecho'
    • 结果:返回错误GetConsoleMode failed并退出
  2. 使用Term :: ReadPassword :: Win32
    • 结果:挂起并且从不提供提示或读取输入
  3. 使用IO :: Prompt
    • 结果:返回错误Cannot write to terminal并退出
  4. 使用Term :: InKey
    • 结果:返回错误Not implemented on MSWin32: The handle is invalid并退出

所有这些都在本机Windows shell(命令提示符或电源shell)中工作,但当我在服务器的ssh会话中时,它们都不起作用.

真的,这是我最感兴趣的,让它在远程ssh会话中工作.

我通过安装在Windows服务器(2003 R2)上的cygwin获得ssh.我正在使用草莓perl而不是cygwin perl(cygwin perl打破了我需要在Windows中本机运行的其他perl脚本,而不是通过ssh).

我最好的猜测是cygwin + Windows正在使用草莓perl,因为它无法分辨它所处的环境.我正在寻找其他sshd + Windows解决方案来探索这个问题.

这些是我在搜索中找到的所有方法.是否还有其他人隐藏用户输入的方法?

Eri*_*sty 0

我会尝试在有效的会话期间输出环境变量(%ENV),然后在无效的会话期间再次输出。我发现,在处理终端 IO 时,您必须根据 $^O 变量和 $ENV{SESSIONNAME} (在 Windows 中)等内容仔细调整“TERM”变量。