【问题标题】:using pexpect pxssh twice on two different ports在两个不同的端口上使用 pexpect pxssh 两次
【发布时间】:2017-04-17 17:36:45
【问题描述】:

我正在尝试使用 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。谢谢

【问题讨论】:

    标签: python ssh pxssh


    【解决方案1】:

    您可以在调用login 方法时提供端口作为可选参数。

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

    【讨论】:

    • 端口无法登录 ssh connectoin:回溯(最近一次调用最后一次):文件“”,第 1 行,在 文件“/usr/lib/python2.7/dist”中-packages/pexpect/pxssh.py”,第 261 行,登录 spawn._spawn(self, cmd) 文件“/usr/lib/python2.7/dist-packages/pexpect/__init__.py”,第 596 行,在 _spawn assert self.pid is None, 'pid member must be None.' AssertionError: pid 成员必须为 None。
    【解决方案2】:

    由于没有其他人有任何想法,我通过移动 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)
    

    【讨论】:

      【解决方案3】:

      根据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)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-12-22
        • 1970-01-01
        • 2022-01-25
        • 2017-12-03
        • 2019-07-29
        • 2018-10-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多