簡體   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