当服务器无法通过IP访问时,使用pxssh的登录超时时间过长



我正试图通过SSH解析来自一系列服务器的数据,并希望在服务器没有IP连接时缩短SSH尝试的时间。程序引发异常似乎需要大约20秒的时间,这使得尝试所有服务器的总处理时间过长。我试着像下面这样更改超时参数,但没有改变任何东西。

import pexpect
from pexpect import pxssh
s = pxssh.pxssh(timeout=1)
s.login(ipaddr, username, password, login_timeout=1)

请告诉我如何将等待时间缩短到5秒或更短。

感谢

我认为您所经历的延迟与连接时间无关,而是由于pxssh在连接后花在做其他事情上的时间。这是我试过的。

这几乎立即引发了一个异常:

>>> s = pxssh.pxssh()
>>> s.login('google1.com', 'user')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File     "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/pexpect/pxssh.py", line 297, in login
raise ExceptionPxssh('Could not establish connection to host')
pexpect.pxssh.ExceptionPxssh: Could not establish connection to host

但是,在引发异常之前,这需要大约10秒的时间,更改"login_timeout"似乎没有任何效果。例外情况很长,所以我将在下面发布部分内容:

>>> from pexpect import pxssh
>>> s = pxssh.pxssh()
>>> s.login('google.com', 'user')
...
 File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/pexpect/pxssh.py", line 401, in set_unique_prompt
i = self.expect ([TIMEOUT, self.PROMPT], timeout=10)

我认为问题与pxssh解决终端提示的方式有关,您可以在这里阅读更多关于该过程的信息。请注意,在异常中,当它尝试设置_unique_prompt时,会有10秒的超时。解决这种情况的方法可能是在s.login()中设置"auto_prompt_reset=True"。这为我消除了延迟。

在我的案例中,登录需要很长时间的服务器是我有自定义提示设置的服务器。我备份并删除了.bashrc,登录速度快多了。

相关内容

  • 没有找到相关文章

最新更新