[英]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.