【问题标题】:How to check if Telnet connection is still established? using telnetlib如何检查 Telnet 连接是否仍然建立?使用 telnetlib
【发布时间】:2016-09-10 00:12:14
【问题描述】:

我想检查使用 telnetlib 的连接是否仍然正常。

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

【问题讨论】:

    标签: telnetlib


    【解决方案1】:

    我从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”,我们就会得到答案,否则,异常将被忽略,并且由于没有返回,我们将得到 None 作为响应

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

    【讨论】:

      猜你喜欢
      • 2016-05-21
      • 1970-01-01
      • 2018-06-10
      • 1970-01-01
      • 2012-10-14
      • 2016-07-18
      • 2015-08-27
      • 1970-01-01
      • 2011-09-20
      相关资源
      最近更新 更多