Liebe Pythonfreunde,
ich habe mir ein Skript zusammengeschrieben welches einen TeamspeakServer per Telnet steuert als Messages verschickt und so weiter. Der Server gibt immer nach Befehlsausführung ein OK aus, dieses würde ich gerne aus Telnet rausladen damit das Skript prüft wurde der Befehle empfangen und bearbeitet, da Python oft für Telnet zu schnell ist. Ich nutze als Modul die telnetlib leider verstehe ich manche Teile aus der Doku net da ich mich mit telnet noch nicht groß beschäfftigt habe.
Viele Grüße
BasterTWO
Telnet Anwort laden
Wo liegt denn Dein Problem?
Du kannst die Serverantworten ja mit einem der Read-Befehle der telnetlib, z.B. read_eager lesen und dann auf 'OK' überprüfen. Falls immer ein 'OK' zurückgeliefert wird, kannst Du auch read_until('OK'), evtl. auch mit timeout verwenden.
MfG
HWK
Du kannst die Serverantworten ja mit einem der Read-Befehle der telnetlib, z.B. read_eager lesen und dann auf 'OK' überprüfen. Falls immer ein 'OK' zurückgeliefert wird, kannst Du auch read_until('OK'), evtl. auch mit timeout verwenden.
MfG
HWK
Vielen Danke für deine Antwort nun habe ich auch mal kapiert wie das mit dem Read funktioniert und das man so überprüfen kann ob OK zurückgeliefert wurde ist echt cool. Da man immer noch ein Timeout von 0.1 Sekunden hat.
Viele Grüße
BasterTWO
Viele Grüße
BasterTWO
Leider bin ich erst jetzt dazu gekommen die Überprüfung einzubauen aber leider scheiter ich immer. Es sieht so auch als ob die Funktio read_until nicht richtig denn Wer OK zurück gibt.
Meine Überprüfung:
Weis jemand wo ran das liegen kann.
Viele Grüße und Guten Morgen
BasterTWO
Meine Überprüfung:
Code: Alles auswählen
if tel.read_until('OK') != 'OK':
print "[" + console.colorize('red', '!!') + "] Can not Login as " + SuperAdmin
sys.exit()
Viele Grüße und Guten Morgen
BasterTWO
- Rebecca
- User
- Beiträge: 1662
- Registriert: Freitag 3. Februar 2006, 12:28
- Wohnort: DN, Heimat: HB
- Kontaktdaten:
Lass dir doch mal ausgeben, was read_until zurueckgibt, am besten mit repr. Vielleicht haengt ja noch ein Zeilenumbruch oder sowas dran.
Offizielles Python-Tutorial (Deutsche Version)
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
- veers
- User
- Beiträge: 1219
- Registriert: Mittwoch 28. Februar 2007, 20:01
- Wohnort: Zürich (CH)
- Kontaktdaten:
So wie ich das verstehe gibt read_until alles bis (und mit?) expected. Also müsste wohl auf tel.read_until('OK').endswith('OK') geprüft werden. 

[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
Vielen Dank für eure Antworten ich habe nun meine if Abfrage abgeändert.
Nun wird 6 Sekunden gewartet wenn bis dahin kein OK zurück kommt wird das Skript abgebrochen mit Fehlermeldung.
Viele Grüße
BasterTWO
Code: Alles auswählen
if tel.read_until('OK',6).endswith('OK') == False:
print "[" + console.colorize('red', '!!') + "] Can not Login as " + SuperAdmin
sys.exit()
Viele Grüße
BasterTWO