2013-03-27 67 views
0

我想寫一個python腳本來建立一個telnet連接(使用telnetlib)到主機中telnetlib超時錯誤:處理在python

for i in range(len(HOST)): 
    print "scanning " + HOST[i] + " ...\n" 
    tn = telnetlib.Telnet(HOST[i],23,3) 

問題是,當連接超時的一個,腳本執行中斷並返回以下錯誤:

Traceback (most recent call last): 
    File "C:\Python27\telnet.py", line 24, in <module> 
    tn = telnetlib.Telnet(HOST[i],23,3) 
    File "C:\Python27\lib\telnetlib.py", line 209, in __init__ 
    self.open(host, port, timeout) 
    File "C:\Python27\lib\telnetlib.py", line 225, in open 
    self.sock = socket.create_connection((host, port), timeout) 
    File "C:\Python27\lib\socket.py", line 571, in create_connection 
    raise err 
socket.timeout: timed out 

任何人都知道如何跳過此錯誤並繼續執行腳本?

回答

1

您需要使用try...except塊來捕捉異常並告訴解釋器忽略它。例如:

import socket 

for i in range(len(HOST)): 
    print "scanning " + HOST[i] + " ...\n" 
    try: 
     tn = telnetlib.Telnet(HOST[i],23,3) 
    except socket.timeout: 
     pass 

在這種情況下,這是一個好主意,明確指出要趕上(socket.timeout)的異常。套接字可以拋出許多不同類型的異常,因此使用通用的except:語句可能會掩蓋打開,讀取或寫入套接字的問題。