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