2016-12-02 109 views
0

我試圖通過使用pxssh的SSH連接到遠程設備,但其中一個設備是SSH端口2222,一個是22.我知道我可以更改pxssh中的硬編碼值。 py到22或2222,但我不知道我怎麼能同時做到這一點。在兩個不同的端口上使用pexpect pxssh兩次

我看着pxssh login()函數,並試圖把「口」的密碼後,因此調用pxssh時,我可以指定端口需要如

pxssh.py文件

def login (self, server, username, password='', port, terminal_type='ansi',original 
      _prompt=r"[#$]", login_timeout=10, 
      auto_prompt_reset=True, ssh_key=None, quiet=True, 
      sync_multiplier=1, check_local_ip=True): 

調用pxssh從我的文件

s.login(server, username, password, port) 

然而,隨着

error'ed登錄

我當時以爲我可以複製pxssh並有pxssh22.py和pxssh2222.py

if something: 
    from pexpect import pxssh22 
else: 
    from pexpect import pxssh2222 

但是每一個指定不同的硬編碼端口號保持與所謂的示數時:

try: 
    s = pxssh2222.pxssh() 
    s.login(server, username, password) 

except pxssh2222.ExceptionPxssh as e: 
NameError: global name 'pxssh2222' is not defined 

我怎樣才能使用pxssh來訪問端口2222和22.謝謝

回答

0

由於沒有人有任何想法,我通過移動pxssh.py文件中的端口參數,然後rearra將s.login函數調用包含在端口中。

修改pxssh.py文件

def login (self, server, username, port, password='', terminal_type='ansi', 
      original_prompt=r"[#$]", login_timeout=10, 
      auto_prompt_reset=True, ssh_key=None, quiet=True, 
      sync_multiplier=1, check_local_ip=True): 

修改登錄調用允許端口參數。

s.login(sshIP, "root", sshPort, sshPass) 
0

調用login方法時,可以將端口作爲可選參數提供。

s = pxssh.pxssh() 
    s.login(server, username, password, port=2222) 
相關問題