pxssh.pxssh()在python中产生错误

时间:2015-04-09 08:27:52

标签: python-2.7

我在python中运行pxssh.pxssh()时遇到以下错误。请告诉我这里缺少的东西。


    Exception AttributeError: "'pxssh' object has no attribute 'closed'" in <bound method pxssh.__del__ of <pexpect.pxssh.pxssh object at 0x10d98e910>> ignored
.........
    File "/Users/any_user/system/somelibrary_lib.py", line 377, in login
    ssh = pxssh.pxssh(maxread=read_buffer, ignore_sighup=False)
    TypeError: __init__() got an unexpected keyword argument 'ignore_sighup'

.........

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。解决方案是这样的:

s = pxssh.pxssh(timeout=time_out, maxread=2000000)
s.SSH_OPTS += " -o StrictHostKeyChecking=no"
s.SSH_OPTS += " -o UserKnownHostsFile=/dev/null"

您应该添加这两个选项

答案 1 :(得分:0)

我遇到了同样的问题。我发现的解决方案是使用SSH_OPTS对象的pxssh属性而不是options ctor(__init__)参数。
所以我的代码看起来像这样:

s = pxssh.pxssh()
s.SSH_OPTS += " -o StrictHostKeyChecking=no"
s.force_password = True
s.login(ip, user, passwd)

它不会在模块初始化和AttributeError上抛出TypeError异常 但它仍然不适合我。如果远程服务器在启动时具有MOTD或某些shell初始化,则会破坏pxssh的逻辑。我做了以下技巧:

s.login(ip, user, passwd, original_prompt = "Last login:")

Shell会在每个成功的登录行上写入Last login: %date% from %ip%。我用它来验证登录成功。现在,使用s可以执行远程命令 original_prompt的原始(默认)值为r"[#$]"。可能是你需要以某种方式将它们组合起来以进行正确的pxssh工作。如果您要连接到> shell或original_prompt设备,可能需要将SQL添加到Cisco