1

さまざまなホストへのtelnet接続(telnetlibを使用)を確立するためのPythonスクリプトを作成しようとしています。

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

問題は、接続の1つがタイムアウトすると、スクリプトの実行が中断され、次のエラーが返されることです。

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

このエラーをスキップしてスクリプトを続行する方法を知っている人はいますか?

4

1 に答える 1

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:ステートメントを使用すると、ソケットのオープン、読み取り、または書き込みに関する問題がマスクされる可能性があります。

于 2013-03-27T14:12:43.800 に答える