python pty 模块 - 缓冲区卡住?

1 投票
2 回答
528 浏览
提问于 2025-04-17 04:13

我正在尝试制作一个小模块,这个模块可以打开一个ssh连接,并允许通过ssh发送命令,同时返回命令的输出。这里面只需要一个ssh连接(这样多个命令就不会导致自动阻塞)。我知道有paramiko这个库,但因为其他原因我必须使用python3.2,所以不能用它。

我写的模块在这里:http://kbicker.web.cern.ch/kbicker/ssh.py

原则上,它是可以工作的。但是,当我用cat命令读取一个文本文件时,程序就卡住了。我发现这是因为从pty读取新行时出现了阻塞。我猜这可能是某种缓冲区的问题,但我不知道该怎么解决。

如果有人能给我的代码提供其他建议,我也会非常感激。

提前感谢你的帮助!

2 个回答

0

试试pexpect这个工具。我之前遇到过类似的问题,用它解决了。

1

解决了,或者说找到了一个变通的方法:

通过使用带有 ssh -M 选项的线程,我可以保持一个主 ssh 连接打开,然后让其他命令各自打开自己的 ssh 子进程,这些子进程通过主连接来连接,这样就不需要再打开多个连接了。

撰写回答