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