所以我已經嘗試了幾個模塊pxssh,pexpect等,我似乎無法獲得ssh連接到我們的ssh代理工作。基本上我想做的是使用我們的SSH代理,它可以訪問我們其餘的設備作爲其他設備的跳轉點,然後運行命令。這工作在ipython中,但是當它連接時會引發下面列出的異常,但是它繼續執行其餘的命令並且工作正常。但是,當只是作爲python腳本運行時,它只會導致腳本失敗。由於例外,我認爲這是失敗的。有沒有辦法關閉這個例外,或者避免這種例外?還是我這樣做全錯了?pxssh連接到一個ssh代理; read_nonblocking()中超時超時
我也試圖與提示設置和auto_prompt_reset設置搞亂......
代理主機是不是一個真正的Linux主機,或Cisco對於這個問題,這可能是爲什麼違約設置不工作。
不確定該從哪裏出發,所以任何幫助或見解都會很棒。
import pxssh
s = pxssh.pxssh()
hostname = '10.10.10.4'
username = 'username'
password = 'password!'
s.login (hostname, username, password)
s.sendline ('connect 10.10.5.1')
s.prompt(timeout=2)
print s.before
s.endline ('')
s.sendline ('show run')
s.prompt(timeout=2)
print s.before
發佈的異常。
In [40]: s.login (hostname, username, password)
---------------------------------------------------------------------------
TIMEOUT Traceback (most recent call last)
<ipython-input-40-51f00f2075f5> in <module>()
----> 1 s.login (hostname, username, password)
/usr/lib/python2.7/dist-packages/pxssh.pyc in login(self, server, username, password, terminal_type, original_prompt, login_timeout, port, auto_prompt_reset)
241 self.close()
242 raise ExceptionPxssh ('unexpected login response')
--> 243 if not self.synch_original_prompt():
244 self.close()
245 raise ExceptionPxssh ('could not synchronize with original prompt')
/usr/lib/python2.7/dist-packages/pxssh.pyc in synch_original_prompt(self)
132 # If latency is worse than these values then this will fail.
133
--> 134 self.read_nonblocking(size=10000,timeout=1) # GAS: Clear out the cache before getting the prompt
135 time.sleep(0.1)
136 self.sendline()
/usr/lib/python2.7/dist-packages/pexpect.pyc in read_nonblocking(self, size, timeout)
822 raise EOF ('End of File (EOF) in read_nonblocking(). Very pokey platform.')
823 else:
--> 824 raise TIMEOUT ('Timeout exceeded in read_nonblocking().')
825
826 if self.child_fd in r:
TIMEOUT: Timeout exceeded in read_nonblocking().