如何检查Telnet连接是否仍然建立?使用telnetlib

时间:2016-05-13 17:32:15

标签: telnetlib

我想检查使用telnetlib的连接是否仍在运行。

我这样做的方法是发送ls命令并检查答案,但我确定必须有更顺畅的解决方案。

1 个答案:

答案 0 :(得分:0)

我从here得到了这个想法,所以对他们赞不绝口,代码可能是这样的

def check_alive(telnet_object):
    try:
        if telnet_object.sock:
            telnet_object.sock.send(telnetlib.IAC + telnetlib.NOP)
            telnet_object.sock.send(telnetlib.IAC + telnetlib.NOP)
            telnet_object.sock.send(telnetlib.IAC + telnetlib.NOP)
            return True
    except:
        pass 

这个想法非常简单:

  • 如果调用close().sock将为0,所以我们什么都不做
  • 否则,我们尝试发送一些无害的东西,它不应该与底层服务相互作用,IAC + NOP是一个很好的候选者。 LaterEdit:似乎只发送一次是不够的,所以我只做了3次,我知道它不是很专业,但是......“如果它看起来很愚蠢,但它有效...而不是它不是笨“
  • 如果一切顺利,我们得到“返回True”,我们得到答案,否则,异常将被忽略,并且,由于没有返回,我们将得到一个无响应

我已经将此方法用于针对几个Cisco路由器的直接和代理(SocksiPy)连接