繁体   English   中英

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

[英]Login timeout with pxssh takes too long when the server is IP unreachable

我正在尝试通过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解决终端提示的方式有关,您可以在此处阅读有关该过程的更多信息。 请注意,在尝试设置set_unique_prompt时,有一个10秒钟的超时例外。 解决您的情况的方法可能是在s.login()中设置'auto_prompt_reset = True'。 这为我消除了延迟。

就我而言,花费很长时间登录的服务器是我进行了自定义提示设置的服务器。 我备份并删除了.bashrc,登录速度更快。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM