如何使用带有telnetlib的python脚本通过telnet重置comserver

如何使用带有telnetlib的python脚本通过telnet重置comserver,python,automation,telnet,telnetlib,com-server,Python,Automation,Telnet,Telnetlib,Com Server,我想编写一个python脚本,自动重置com服务器。 为此,脚本必须传输命令“2”、“5”、“y” 我已经写了这个小程序: import sched import time import sys from LoggerTelnet import LoggerTelnet HOST = "xxx.xxx.xx.xxx" PORT = "yyyy" UPDATE_TIME = 600 s = sched.scheduler(time.time, time.sleep) def reset(sc

我想编写一个python脚本,自动重置com服务器。 为此,脚本必须传输命令“2”、“5”、“y” 我已经写了这个小程序:

import sched
import time
import sys
from LoggerTelnet import LoggerTelnet

HOST = "xxx.xxx.xx.xxx"
PORT = "yyyy"
UPDATE_TIME = 600

s = sched.scheduler(time.time, time.sleep)

def reset(sc):
    lt = time.localtime()
    print(time.strftime("Datum: %d.%m.%Y, Uhrzeit: %H:%M:%S", lt))
    sys.stdout.flush()
    print("Verbindung zum COM-Server wird aufgebaut")
    sys.stdout.flush()
    tn = LoggerTelnet(HOST, PORT)
    sys.stdout.flush()
    print("Logger wird jetzt resetet")
    sys.stdout.flush()
    tn.kommando("2")
    tn.kommando("5")
    tn.kommando("z")
    tn.close()
    print("Verbindung zum COM-Server wurde geschlossen")
    print("Logger erfolgreich resetet \n\n\n")
    sys.stdout.flush()
    s.enter(UPDATE_TIME, 1, reset, (sc,))

s.enter(UPDATE_TIME, 1, reset, (s,))
s.run()
此程序使用我的Telnet类:

import telnetlib

class LoggerTelnet(object):

    def __init__(self, host, port):
        try:
            self.tel = telnetlib.Telnet(host, port) 
        except:
            raise Error("Could not connect to Host")
        self.lese_daten()

    def close(self): 
        self.tel.close()

    def lese_daten(self):
        msg = self.tel.read_until("\r\n", 20.0)
        print(msg)
        return msg

    def kommando(self, kom):
        try:
            self.tel.write("%s\r\n" % kom)
        except:
            raise Error("Could not send Command")

        return self.lese_daten()
但整个计划都不起作用。我认为与服务器的连接已经建立,但是命令没有被发送或执行。 我也没有从telnet会话中得到任何反馈。只有在开始时,连接才会建立

我希望你有一个想法,可以帮助我:-)


最好。

考虑一下,我在其中建议解决一个非常类似的问题。我尝试使用telnetlib.Telnet.expect()但它不起作用。。。我仍然没有从Com服务器得到任何反馈。而且它也没有被重置。