【问题标题】:handling telnetlib timeout error in python在 python 中处理 telnetlib 超时错误
【发布时间】:2013-03-17 15:42:27
【问题描述】:

我正在尝试编写一个 python 脚本来建立到一系列主机的 telnet 连接(使用 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

有人知道如何跳过此错误并继续执行脚本吗?

【问题讨论】:

    标签: python timeout telnetlib


    【解决方案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: 语句可能会掩盖打开、读取或写入套接字的问题。

    【讨论】:

      猜你喜欢
      • 2020-04-26
      • 2011-12-31
      • 2012-08-05
      • 2015-05-07
      • 2016-07-27
      • 2016-01-21
      • 2017-04-07
      • 2013-05-02
      • 1970-01-01
      相关资源
      最近更新 更多