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