每次我尝试使用 winpexpect 来生成终端(例如:openssh,ssh
)。如果我这样做winpexpect.winspawn('ssh ...')
,我会遇到“不会分配伪终端,因为标准输入不是终端。”。如果我强制使用终端,winpexpect.winspawn('ssh -t -t ...')
那么即使 ssh 客户端真的连接到服务器,我的读取缓冲区也不会得到任何信息。其他交互式终端也是如此,它们只是挂起,读取缓冲区中没有任何显示。但是对于终端的命令,例如ping
winpexpect 有效。
我发现真正起作用的是使用 putty 的 plink.exe winpexpect.winspawn('plink ...'
,. 这与 putty.exe 相同,但它不进行终端仿真,我只获取原始 telnet/解密的 ssh 数据。然而,这并不是真正理想的解决方案。
我真的很困惑如何让一个 spawner/expect 库与 Windows 上的终端一起工作!我什至尝试过使用expectJ,只是纯Java,这也有同样的问题。