2016-06-16 23 views
1

Ich frage mich, ob es möglich ist zu wissen, ob meine Telnet-Verbindung erfolgreich ist?Python Telnet-Verbindung erfolgreich

Also, wenn ich meinen Schalter verbunden bin und wenn ich könnte Befehle schreiben

telnet = telnetlib.Telnet(IP) 
telnet.read_until(b"User Name:") 
telnet.write(b"LOGIN\n") 
telnet.read_until(b"Password:") 
telnet.write(b"PASSWORD\n") 
# Here I want to know if I'm connected 
+0

Es gibt keine solche Option in 'telnet' lib, können Sie die Server-Antwort analysieren und überprüfen, ob die Verbindung erfolgreich ist oder nicht, das heißt, wenn der Server – Harwee

+0

Eigentlich für eine erfolgreiche Authentifizierung reagiert, denke ich an die Methoden einige werden Rückgabe eines 'EOFError' wenn die Verbindung verloren geht. Also sollten Sie Ihren Code wahrscheinlich in eine "Try/Except" -Klausel einschließen. Siehe hier: https://docs.python.org/3.5/library/telnetlib.html –

+0

@Harwee Ich habe Ihren Tipp verwendet und es funktioniert perfekt! – Eduloc

Antwort

0

Verwenden Sie nicht read_all, wenn Sie nach der Authentifizierung etwas schreiben möchten. Es blockiert die Verbindung bis EOF erreicht ist/Verbindung ist geschlossen.

Überprüfen Sie zuerst den Ausgang Telnet-Server gibt, wenn eine Authentifizierung erfolgreich ist mit Putty oder etwas anderes. read_untill Die Zeichenfolge, die nach der Authentifizierung abgeglichen wird.

telnet = telnetlib.Telnet(IP) 
telnet.read_until(b"User Name:") 
telnet.write(b"LOGIN\n") 
telnet.read_until(b"Password:") 
telnet.write(b"PASSWORD\n") 

telnet.read_untill("string to be matched") 
+0

Ich benutze 'telnet.read_very_eager()' – Eduloc

+0

@Harwee ja, Sie haben Recht, es ist besser, telnet.read_until() oder telnet.read_very_eager() – wind85

+0

Dank Ihnen beiden! :) – Eduloc

1

Sie diesen Weg gehen könnte:

def is_connected(telnet_obj): 
    answer = telnet_obj.read_all() 
    if "connected" in answer:    #this test condition is not real is an example 
     return True 
    else: 
     return False 

Wenn Sie beobachten, was yout Router/Switch Sie zurück kann für diesen Zustand testen. In diesem Fall prüfen, ob eine Zeichenfolge oder ein Fehler in der Antwortvariablen vorhanden ist.