2016-05-03 13 views
0

SSH経由で一連のサーバからデータを解析しようとしていますが、サーバにIP接続がないときにSSH試行の時間を短縮したいとします。それは、プログラムが例外を発生させるまでおよそ20秒かかると思われ、すべてのサーバを試行するには全処理時間が長すぎます。 以下のようなタイムアウトパラメータを変更しようとしましたが、何も変更されませんでした。サーバがIPに到達できないときに、pxsshによるログインタイムアウトが長くかかる

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

待機時間を5秒以下に短縮する方法を教えてください。

おかげ

答えて

0

は、私はあなたが経験している遅延が接続するために、時間を行う必要はありませんが、むしろそれは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」を変更すると効果がないようです。私は問題はpxsshは、あなたがプロセスhereについての詳細を読むことができる端末プロンプトを解決する方法に関係していると思います

>>> 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) 

:例外はので、私はちょうど下のそれの一部を投稿します非常に長いです。例外には、set_unique_promptを試みるときに10秒のタイムアウトがあることに注意してください。あなたの状況を回避するには、s.login()で 'auto_prompt_reset = True'を設定することがあります。これは私のための遅延を削除しました。

私の場合、ログインに長時間を要したサーバは、私がカスタムプロンプトをセットアップしたサーバでした。私はバックアップし、私の.bashrcを削除し、ログインははるかに高速でした。

関連する問題