Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CPython没有';无法与Windows上生成的tty终端良好交互_Python_Terminal_Expect_Tty_Pexpect - Fatal编程技术网

CPython没有';无法与Windows上生成的tty终端良好交互

CPython没有';无法与Windows上生成的tty终端良好交互,python,terminal,expect,tty,pexpect,Python,Terminal,Expect,Tty,Pexpect,每次我尝试使用winpexpect生成终端时(例如:openssh,ssh)。如果我执行winpexpect.winspawn('ssh…')我会遇到“由于stdin不是终端,所以不会分配伪终端。”。如果我使用winpexpect.winspawn('ssh-t-t…')强制一个终端,那么我的读取缓冲区中就不会有任何内容,即使ssh客户端实际上正在连接到服务器。其他交互终端也是如此,它们只是挂起,读取缓冲区中没有显示任何内容。但是,对于该终端的命令,例如pingwinpexpect可以工作 我发

每次我尝试使用winpexpect生成终端时(例如:openssh,
ssh
)。如果我执行
winpexpect.winspawn('ssh…')
我会遇到“由于stdin不是终端,所以不会分配伪终端。”。如果我使用
winpexpect.winspawn('ssh-t-t…')
强制一个终端,那么我的读取缓冲区中就不会有任何内容,即使ssh客户端实际上正在连接到服务器。其他交互终端也是如此,它们只是挂起,读取缓冲区中没有显示任何内容。但是,对于该终端的命令,例如
ping
winpexpect可以工作

我发现使用putty的plink.exe,
winpexpect.winspawn('plink…')
确实有效。这与putty.exe相同,但它不进行终端仿真,我只获取原始telnet/解密的ssh数据。然而,这并不是真正理想的解决方案


我真的被困在如何让生成程序/预期库在windows上与终端一起工作!我甚至尝试过使用纯Java的expectJ,这也有同样的问题。

winpexpect/plink有什么问题?
你可以试试forked,它解决了winpexpect-1.5上的许多问题。你想过改用paramiko吗?这可能与pty不是Windows的本机有关。我不确定他们是如何实现它的,但很可能他们必须以某种方式模拟它们。
os.openpty
函数在Windows上甚至不存在。因此我想期望它是“dicy”。您运行的是cygwin吗?还是使用本机Python版本?paramiko…需要大量重写。我正在尝试移动使用telnetlib编写的内容,telnetlib上已经有expect方法。我的目标是使用winpexpect调用ssh客户端。这是一种非常简单的方法,不需要重写。@KeithCPython,本机windows。如果是通过cygwin,我想我会得到我想要的。plink不模拟传入的终端数据。有点混乱。