在python中使用pexpect lib进行telnet

时间:2017-05-28 13:43:43

标签: python telnet pexpect

我希望在python中使用pexpect lib运行telnet,我希望如果telnet密码为true,打印是非,打印错误... 现在我的代码是:

import pexpect

ip="192.168.1.1"
password="admin"

child = pexpect.spawn("telnet "+ip+" -l admin", timeout=2)
child.expect ("Password:")
child.sendline ("admin")
child.expect(b"> ")
child.sendline ("ls")
child.close()
result = child.signalstatus
if result == 1:
    print ("Success")
else:
    print ("Bad Result")

在顶级代码中,当密码为true时,脚本运行良好并显示"成功"但是当密码错误时,脚本不显示"结果不好"并且只是显示了很多错误..

我该怎么做?

1 个答案:

答案 0 :(得分:0)

当您输入错误密码时,您没有正常处理它,因此它引发了超时异常并且从未执行过child.close()。您看到的错误只是与例外相关的打印消息。

解决方案: 您可以传递期望列表并相应地处理它们

child = pexpect.spawn("telnet "+ip+" -l admin", timeout=2)
child.expect ("Password:")
child.sendline ("admin")
result = child.expect(["> ", pexpect.TIMEOUT])
if result == 0: #means prompt was caught successfully i.e. password was correct
    child.sendline ("ls")
    print ("Success")
elif result == 1:
    print ("Bad Result")
child.close()

事实上,这可以成为一个功能,您可以根据用例处理更多异常和特殊情况。