我在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'
.........
答案 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
。