我正在尝试使用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
方法时可以提供端口作为可选参数。
s = pxssh.pxssh()
s.login(server, username, password, port=2222)
,因为没有其他人有任何想法,我通过在pxssh.py文件中移动端口参数,然后重新安排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)
根据文档,我们可以简单地使用默认参数和遗嘱端口。
host = 127.0.0.1
user = root
password = toor
s.login(host,user,password, terminal_type='ansi', original_prompt='[#$]', login_timeout=10, port=2022)