在两个不同的端口上使用pexpect pxsh两次

2024-10-03 17:26:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用pxssh通过SSH连接到远程设备,但是其中一个设备是SSH端口2222,另一个是22。我知道我可以在pxsh.py文件但我不知道怎么能同时做到这两个。在

我查看了pxsh login()函数,并尝试在密码后加上“port”,因此在调用pxsh时,我可以指定所需的端口,例如

在pxsh.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):

从我的文件调用pxsh登录

^{pr2}$

但是这个错误

SyntaxError: non-default argument follows default argument

然后我想我可以复制pxsh并拥有pxsh22.py和pxsh2222.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端口。谢谢


Tags: 文件端口pytruedefaultserverportusername
3条回答

由于没有其他人有任何想法,我通过在pxsh.py文件文件,然后重新排列s.login函数调用以包含端口。在

修改pxsh.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):

修改登录调用以允许端口参数。在

^{pr2}$

根据documentation,我们可以简单地使用默认参数和意愿端口。在

host = 127.0.0.1
user = root
password = toor

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

在调用login方法时,可以将port作为可选参数提供。在

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

相关问题 更多 >