Seite 1 von 1

Telnet Anwort laden

Verfasst: Samstag 3. November 2007, 00:31
von BasterTWO
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

Verfasst: Samstag 3. November 2007, 01:20
von HWK
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

Re

Verfasst: Samstag 3. November 2007, 10:00
von BasterTWO
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

So

Verfasst: Sonntag 4. November 2007, 02:37
von 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:

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

Verfasst: Sonntag 4. November 2007, 10:51
von Rebecca
Lass dir doch mal ausgeben, was read_until zurueckgibt, am besten mit repr. Vielleicht haengt ja noch ein Zeilenumbruch oder sowas dran.

Verfasst: Sonntag 4. November 2007, 15:25
von veers
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:

Danke

Verfasst: Sonntag 4. November 2007, 16:14
von BasterTWO
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