我希望在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时,脚本运行良好并显示"成功"但是当密码错误时,脚本不显示"结果不好"并且只是显示了很多错误..
我该怎么做?
答案 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()
事实上,这可以成为一个功能,您可以根据用例处理更多异常和特殊情况。