Bug in telnetlib?
Verfasst: Mittwoch 12. November 2008, 10:37
Experimentiere gerade mit [mod]telnetlib[/mod] unter Windows. Ich verbinde mich auch mit dem Windowsrechner (localhost)...
Wenn ich debug mit tn.set_debuglevel(999) einschalte, kann ich sehen, das Daten die gesendet werden nur mit "\n" abgeschlossen sind. Das scheint aber mit Windows nicht zu funktionieren, weil "\n\r" erwartet wird!
Kann jeder unter Windows ja mal selber Testen mit dem hier:
Man muß den "telnet" Dienst anhaben und den User in die Gruppe "TelnetClients" packen.
Es sieht so aus:
Mit "\n\r" geht's aber, siehe:
Ausgabe:
hab in den Quellen von telnetlib.py gesucht, aber nichts gefunden, wie man das Problem ändern könnte.
(Getestet mit Python 2.5.2 unter Vista.)
Lustig ist, das es egal ist ob "\n\r" oder "\r\n" gesendet wurde
Wenn ich debug mit tn.set_debuglevel(999) einschalte, kann ich sehen, das Daten die gesendet werden nur mit "\n" abgeschlossen sind. Das scheint aber mit Windows nicht zu funktionieren, weil "\n\r" erwartet wird!
Kann jeder unter Windows ja mal selber Testen mit dem hier:
Code: Alles auswählen
import sys
import telnetlib
HOST = "localhost"
print "connect '%s'..." % HOST,
tn = telnetlib.Telnet(HOST)
print "OK"
tn.set_debuglevel(1)
tn.mt_interact()
Es sieht so aus:
Es wird also nur mit "\n" gesendet und man kommt nicht weiter...connect 'localhost'... OK
...
Telnet(localhost,23): recv 'Welcome to Microsoft Telnet Service \r\n'
Welcome to Microsoft Telnet Service
Telnet(localhost,23): recv '\n\rlogin: '
login: jens
Telnet(localhost,23): send 'jens\n'
Telnet(localhost,23): recv 'jens'
jens
Mit "\n\r" geht's aber, siehe:
Code: Alles auswählen
import sys
import telnetlib
HOST = "localhost"
print "connect '%s'..." % HOST,
tn = telnetlib.Telnet(HOST)
print "OK"
tn.set_debuglevel(1)
tn.read_until('login: ')
tn.write("jens\r\n")
tn.mt_interact()
Nun wurde der Username akzeptiert und man kommt zur Passwort abfrage...connect 'localhost'... OK
...
Telnet(localhost,23): recv 'Welcome to Microsoft Telnet Service \r\n'
Telnet(localhost,23): recv '\n\rlogin: '
Telnet(localhost,23): send 'jens\n\r'
Telnet(localhost,23): recv 'jens\n\rpassword: '
jens
password:
hab in den Quellen von telnetlib.py gesucht, aber nichts gefunden, wie man das Problem ändern könnte.
(Getestet mit Python 2.5.2 unter Vista.)
Lustig ist, das es egal ist ob "\n\r" oder "\r\n" gesendet wurde