使用pxssh(Python的ssh模块)时读取非阻塞错误

5 投票
2 回答
5138 浏览
提问于 2025-04-16 17:42

我正在尝试通过一个Python脚本,使用pxssh模块来远程连接一台机器。

以下是我用来实现这个功能的代码:

    s = pxssh.pxssh()
    s.login (hostip,'root',auto_prompt_reset=False)

但是我遇到了一个超时错误。

  Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.6/dist-packages/pxssh.py", line 243, in login
    if not self.synch_original_prompt():
  File "/usr/local/lib/python2.6/dist-packages/pxssh.py", line 134, in synch_original_prompt
    self.read_nonblocking(size=10000,timeout=1) # GAS: Clear out the cache before getting the prompt
  File "/usr/local/lib/python2.6/dist-packages/pexpect.py", line 824, in read_nonblocking
    raise TIMEOUT ('Timeout exceeded in read_nonblocking().')
pexpect.TIME

OUT: Timeout exceeded in read_nonblocking().

2 个回答

2

我也遇到过同样的问题。这个帖子( http://bytes.com/topic/python/answers/760027-read_nonblocking-error-pxssh )提供了一个解决办法。

“我在第一次调用read_nonblocking()之前,在synch_original_prompt()里加了一行self.sendline(),然后再加上time.sleep(0.5)。”

这样做就解决了我的问题。

3

我换了一个Python库,改用了paramiko,因为这个库更稳定,不会出现上面提到的错误。

撰写回答