2017-05-28 38 views
0

我想與Pexpect的LIB蟒蛇運行telnet,我想如果Telnet口令是真實的,真實的打印與錯,錯印... 現在我的代碼是:的telnet可以用Python Pexpect的LIB

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

當你輸入錯誤的密碼時,你沒有正常處理它,所以它引發了一個超時異常,並且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() 

事實上,這可以由一個功能,在這裏你可以處理更多的例外和特殊情況下,按您的使用情況。