固定数量的发送命令后,无法在远程主机上获取命令

时间:2014-11-18 18:34:02

标签: python pexpect

我有一个包含2个线程的程序。每个线程向远程主机发送不同的命令并将输出重定向到文件。线程使用不同的远程主机。我已经创建了与pxssh的连接,并尝试使用'sendline'将命令发送到远程主机:

s = pxssh.pxssh()
try:
    s.login (ip, user, pswd)
except:
    logging.error("login: error")
    return

logging.debug("login: success")
s.sendline("ls / >> tmpfile.log")
s.prompt()

我可以发送固定数量的命令(每个主机上大约500个命令),之后'sendline'停止工作。连接正常,但我无法在远程主机上获取命令。看起来有些资源耗尽......它有什么用?

1 个答案:

答案 0 :(得分:0)

重新作为答案,因为它解决了这个问题:

你在每次写作之间读书吗?如果主机正在产生输出并且你没有读取它,迟早会缓冲一个缓冲区,它会阻塞,直到有空间再写一些。确保在每次写入之前,您可以读取终端中可用的任何数据,即使您不想对其进行任何操作。

如果你真的不关心输出,你可以创建一个不断读入循环的线程,这样你的主线程就可以完全跳过阅读。但是,如果您的代码需要对输出的任何部分执行任何操作,请不要这样做。