Telnet Anwort laden

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
BasterTWO
User
Beiträge: 75
Registriert: Donnerstag 25. Oktober 2007, 20:03

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
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

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
BasterTWO
User
Beiträge: 75
Registriert: Donnerstag 25. Oktober 2007, 20:03

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
BasterTWO
User
Beiträge: 75
Registriert: Donnerstag 25. Oktober 2007, 20:03

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:

Code: Alles auswählen

	if tel.read_until('OK') != 'OK':
		print "[" + console.colorize('red', '!!') + "] Can not Login as " + SuperAdmin
		sys.exit()
Weis jemand wo ran das liegen kann.

Viele Grüße und Guten Morgen
BasterTWO
Benutzeravatar
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
Benutzeravatar
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. :wink:
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
BasterTWO
User
Beiträge: 75
Registriert: Donnerstag 25. Oktober 2007, 20:03

Vielen Dank für eure Antworten ich habe nun meine if Abfrage abgeändert.

Code: Alles auswählen

if tel.read_until('OK',6).endswith('OK') == False:
		print "[" + console.colorize('red', '!!') + "] Can not Login as " + SuperAdmin
		sys.exit()
Nun wird 6 Sekunden gewartet wenn bis dahin kein OK zurück kommt wird das Skript abgebrochen mit Fehlermeldung.

Viele Grüße
BasterTWO
Antworten