【问题标题】:Python telnet connection successfulPython telnet 连接成功
【发布时间】:2016-10-17 18:14:15
【问题描述】:

我想知道是否有可能知道我的telnet连接是否成功?

那么,如果我连接到我的交换机并且我可以编写命令

telnet = telnetlib.Telnet(IP)
telnet.read_until(b"User Name:")
telnet.write(b"LOGIN\n")
telnet.read_until(b"Password:")
telnet.write(b"PASSWORD\n")
# Here I want to know if I'm connected

【问题讨论】:

  • telnetlib中没有这个选项,你可以解析服务器响应并检查连接是否成功,即服务器是否响应认证成功
  • 其实我觉得有些方法如果连接丢失会返回一个EOFError。因此,您可能应该将代码包含在 Try/Except 子句中。见这里:docs.python.org/3.5/library/telnetlib.html
  • @Harwee 我用了你的小费,效果很好!

标签: python telnet telnetlib


【解决方案1】:

如果您打算在身份验证后编写某些内容,请不要使用read_all。它会阻止连接,直到达到EOF/连接关闭。

首先使用 putty 或其他方式检查身份验证成功时 telnet 服务器给出的输出。 read_untill认证后要匹配的字符串。

telnet = telnetlib.Telnet(IP)
telnet.read_until(b"User Name:")
telnet.write(b"LOGIN\n")
telnet.read_until(b"Password:")
telnet.write(b"PASSWORD\n")

telnet.read_untill("string to be matched")

【讨论】:

  • @Harwee 是的,你是对的,使用 telnet.read_until() 或 telnet.read_very_eager() 会更好
  • 感谢你们! :)
【解决方案2】:

你可以这样:

def is_connected(telnet_obj ):
    answer = telnet_obj.read_all()
    if "connected" in answer:             #this test condition is not real is an example
        return True
    else:
        return False

如果您观察路由器/交换机返回的内容,您可以测试该情况。在这种情况下,测试答案变量中是否存在字符串。

【讨论】:

    猜你喜欢
    • 2011-05-30
    • 2011-12-07
    • 2020-01-02
    • 2017-12-20
    • 2019-07-11
    • 1970-01-01
    • 2020-10-03
    • 2010-10-24
    • 2018-11-07
    相关资源
    最近更新 更多