簡體   English   中英

在兩個不同的端口上兩次使用pexpect pxssh

[英]using pexpect pxssh twice on two different ports

我正在嘗試使用pxssh通過SSH連接到遠程設備,但是這些設備之一是SSH端口2222,一個是22。我知道我可以將pxssh.py中的硬編碼值更改為22或2222,但是我不能知道我可以同時做這兩個事情。

我查看了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) 

但是那個錯誤

SyntaxError: non-default argument follows default argument

然后我以為我可以復制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。謝謝

您可以在調用login方法時將port作為可選參數提供。

  s = pxssh.pxssh()
  s.login(server, username, password, port=2222)

由於沒有其他人有任何想法,我通過移動pxssh.py文件中的port參數,然后重新排列s.login函數調用以包含port來解決此問題。

修改后的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)

根據文檔 ,我們可以簡單地使用默認參數和遺囑端口。

host = 127.0.0.1
user = root
password = toor

s.login(host,user,password, terminal_type='ansi', original_prompt='[#$]', login_timeout=10, port=2022)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM