Python telnet客户端

3

大家好!

目前我正在尝试使用Python 2.7的Telnetlib(https://docs.python.org/2/library/telnetlib.html)与一些外部设备进行通信。

我已经完成了基础设置:

import sys
import telnetlib
tn_ip = xxxx
tn_port = xxxx
tn_username = xxxxx
tn_password = xxxx

searchfor = "Specificdata"

def telnet():
    try:
        tn = telnetlib.Telnet(tn, tn, 15)
        tn.set_debuglevel(100)
        tn.read_until("login: ")
        tn.write(tn_username + "\n")
        tn.read_until("Password: ")
        tn.write(tn_password + "\n")
        tn.read_until(searchfor)
        print "Found it!"
    except:
        print "Unable to connect to Telnet server: " + tn_ip

telnet()

我正在尝试浏览所有输出的数据(相当多),直到捕获所需内容。虽然登录很顺利,甚至找到了我要找的数据,并打印出我的发现消息,但我正在寻找一种保持telnet连接打开的方法,因为如果我注销并重新登录,可能会错过其他数据(或重复数据)。

有人知道如何做到这一点吗?


你是否有一份需要的具体信息清单,还是只想让Telnet连接无限期保持打开状态? - VergeA
谢谢您的评论!我正在寻找几个信息。当触发时,其他东西将被激活,因此我真的很想在同时扫描时保持连接开放。 - user5740843
你可以将telnet连接对象作为类的实例变量。在构造/初始化类时,执行登录过程,然后通过委托给实例变量,可以多次调用read_until()方法。当类被销毁/不再需要连接时,请关闭它。 - VergeA
1个回答

3

看起来您想要连接外部设备一次,并在每次看到特定字符串时打印消息。

import sys
import telnetlib
tn_ip = "0.0.0.0"
tn_port = "23"
tn_username = "xxxxx"
tn_password = "xxxx"

searchfor = "Specificdata"


def telnet():
    try:
        tn = telnetlib.Telnet(tn_ip, tn_port, 15)
    except:
        print "Unable to connect to Telnet server: " + tn_ip
        return
    tn.set_debuglevel(100)
    tn.read_until("login: ")
    tn.write(tn_username + "\n")
    tn.read_until("Password: ")
    tn.write(tn_password + "\n")
    while True:
        tn.read_until(searchfor)
        print "Found it"

telnet()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接