Искам да напиша скрипт на 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()
за решаване на много подобен проблем. - person Robᵩ   schedule 02.01.2014