Python 在两个不同端口上使用pexpect pxssh两次

Python 在两个不同端口上使用pexpect pxssh两次,python,ssh,pxssh,Python,Ssh,Pxssh,我正在尝试使用pxssh通过SSH连接到远程设备,但是其中一个设备是SSH端口2222,另一个是22。我知道我可以将pxsh.py中的硬编码值更改为22或2222,但我不知道如何同时执行这两个操作 我查看了pxsh login()函数,并尝试在密码后加上“port”,因此在调用pxsh时,我可以指定所需的端口,例如 pxsh.py文件 def login (self, server, username, password='', port, terminal_type='ansi',origin

我正在尝试使用pxssh通过SSH连接到远程设备,但是其中一个设备是SSH端口2222,另一个是22。我知道我可以将pxsh.py中的硬编码值更改为22或2222,但我不知道如何同时执行这两个操作

我查看了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):
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):
从我的文件调用pxssh登录

s.login(server, username, password, port) 
然而,这一错误与

SyntaxError: non-default argument follows default argument
然后我想我可以复制pxsh并拥有pxssh22.py和pxssh222.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。谢谢,因为没有其他人有任何想法,我通过移动pxsh.py文件中的port参数,然后重新安排s.login函数调用以包含port来解决这个问题

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

由于没有其他人有任何想法,我通过移动pxsh.py文件中的port参数,然后重新安排s.login函数调用以包含port,解决了这个问题

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

调用
login
方法时,可以将端口作为可选参数提供

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

调用
login
方法时,可以将端口作为可选参数提供

  s = pxssh.pxssh()
  s.login(server, username, password, port=2222)
根据,我们可以简单地使用默认参数和意志端口

host = 127.0.0.1
user = root
password = toor

s.login(host,user,password, terminal_type='ansi', original_prompt='[#$]', login_timeout=10, port=2022)
根据,我们可以简单地使用默认参数和意志端口

host = 127.0.0.1
user = root
password = toor

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

Wiht port无法登录ssh connectoin:Traceback(最近一次调用最后一次):文件“/usr/lib/python2.7/dist packages/pexpect/pxsh.py”中的第1行文件“/usr/lib/python2.7/dist packages/pexpect/\uu init.py”中的第261行,在登录spawn中,“pid成员必须为无。”断言者错误:pid成员必须为无。Wiht端口无法登录ssh连接:回溯(最近一次调用):文件“”,第1行,在文件“/usr/lib/python2.7/dist packages/pexpect/pxsh.py”中,第261行,在登录spawn中。_spawn(self,cmd)文件“/usr/lib/python2.7/dist packages/pexpect/u init.py”,第596行,在_spawnassert self.pid为None中,“pid成员必须为None.”AssertionError:pid成员必须为None。