2013-03-27 3 views
0

Я пытаюсь написать питон скрипт, чтобы установить соединение Telnet (с использованием telnetlib) в диапазоне хостов:обработки telnetlib ошибка тайм-аута в питона

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: может замаскировать проблему с открытием, чтением или записью в сокет.

 Смежные вопросы

  • Нет связанных вопросов^_^