python中带有pexpect库的telnet

python中带有pexpect库的telnet,python,telnet,pexpect,Python,Telnet,Pexpect,我想用python和pexpect lib运行telnet,如果telnet密码为true,打印true和false,打印false。。。 现在我的代码是: 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.exp

我想用python和pexpect lib运行telnet,如果telnet密码为true,打印true和false,打印false。。。 现在我的代码是:

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时,脚本工作正常并显示“success”,但当密码错误时,脚本不显示“bad result”,只显示大量错误


我该怎么做?

当您输入错误的密码时,您没有很好地处理它,因此它会引发超时异常,并且从未执行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()
事实上,这可以成为一个函数,您可以根据您的用例处理更多的异常和特殊场景