Tenlet-Zugriff scheitert, warum?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
2weizen
User
Beiträge: 16
Registriert: Freitag 12. Dezember 2008, 20:32

Hallo zusammen,
ich versuche per Telnet Zugriff auf ein IO-Interface zu bekommen (ELV IPIO88). Ich erhalte aber immer die Meldung "Login incorrect". Hier einmal der Python-Code:

Code: Alles auswählen

import telnetlib

tn = telnetlib.Telnet('192.168.178.100', 23)
tn.set_debuglevel(100)
tn.write('\n')
tn.read_until('name: ', 5)
tn.write('admin')
tn.write('\r')
tn.read_until('word: ', 5)
tn.write('password')
tn.write("\r")
tn.read_until('IPIO88> ',5)
tn.write('exit\r')
tn.close()
Und die Ausgabe dazu:

Code: Alles auswählen

Telnet(192.168.178.100,23): send '\n'
Telnet(192.168.178.100,23): recv '\xff\xfd\x03\xff\xfe\x01\xff\xfb\x01'
Telnet(192.168.178.100,23): IAC DO 3
Telnet(192.168.178.100,23): IAC DONT 1
Telnet(192.168.178.100,23): IAC WILL 1
Telnet(192.168.178.100,23): recv '\x1b[2J\r\nIPIO88 Telnet Server V1.00, please
login...\r'
Telnet(192.168.178.100,23): recv '\n\r\nUsername: '
Telnet(192.168.178.100,23): send 'admin'
Telnet(192.168.178.100,23): send '\r'
Telnet(192.168.178.100,23): recv 'a'
Telnet(192.168.178.100,23): recv '\r\nPassword: '
Telnet(192.168.178.100,23): send 'password'
Telnet(192.168.178.100,23): send '\r'
Telnet(192.168.178.100,23): recv '\r\nLogin incorrect'
Telnet(192.168.178.100,23): recv ''
Telnet(192.168.178.100,23): send 'exit\r'
Was micht ein bisschen stutzig macht, sind die Sonderzeichen am Anfang und das "recv 'a' " zwischen Username und Password. Wenn ich ein Terminalprogramm verwende, sieht der Login-Bildschirm etwa so aus:

Code: Alles auswählen

IPIO88 Telnet Server V1.00, please login...

Username: admin
Password:
Bei Eingabe des Passwortes werden keine Zeichen angezeigt.
Woran könnte es also liegen, das ich mit Python keine Verbindung zustande bekomme bzw. wo kommen die zusätzlichen Zeichen her und wie bekomme ich sie weg?
BlackJack

Telnet erwartet AFAIK '\r\n' als Abschluss einer Zeile. Das wird ja auch als Zeilenende empfangen. Versuch's auch mal so zu senden.
2weizen
User
Beiträge: 16
Registriert: Freitag 12. Dezember 2008, 20:32

Danke für den Tip. Ich habe es mit mit \r, \r\n, \n\r, \n ausprobiert, direkt hinter "admin" bzw. "password" und auch als separaten write-Befehl. Klappt trotzdem nicht.
Mir scheint, der Telnet-Server ist nicht regelkonform oder telnetlib hatt ne schwäche.
Überlege mir gerade, mich mal mit Sockets zu beschäftigen, vlt klappt das ja.
Antworten