Python Telnet超时异常未触发问题求助
问题分析与解决
你捕获错了异常类型。telnetlib.Telnet的read_until方法在超时触发时,抛出的不是EOFError,而是:
- Python 3.3及以上版本:
TimeoutError - 更早的Python版本:
socket.timeout
EOFError仅在连接被关闭、无更多数据可读时触发,和超时属于完全不同的场景。
修改后的代码示例
import socket # 兼容旧版本Python需导入该模块 try: tn.read_until(b"calll:", timeout=5) except (TimeoutError, socket.timeout): # 覆盖不同Python版本的超时异常 logdata = 'Timeout reached in login.' logit(logdata) failcode = 4 exitscript() # Leave script, EC4 set. else: tn.write(USER.encode("ascii") + b"\n")
若你的环境是Python 3.3+,也可仅捕获TimeoutError,但同时捕获socket.timeout能获得更好的兼容性。
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

