Jeder, hallo!Python Telnet-Client
Ich versuche derzeit, Telnetlib (https://docs.python.org/2/library/telnetlib.html) für Python 2.7 zu verwenden, um mit einigen externen Geräten zu kommunizieren.
Ich habe die Grundlagen aufgebaut:
import sys
import telnetlib
tn_ip = xxxx
tn_port = xxxx
tn_username = xxxxx
tn_password = xxxx
searchfor = "Specificdata"
def telnet():
try:
tn = telnetlib.Telnet(tn, tn, 15)
tn.set_debuglevel(100)
tn.read_until("login: ")
tn.write(tn_username + "\n")
tn.read_until("Password: ")
tn.write(tn_password + "\n")
tn.read_until(searchfor)
print "Found it!"
except:
print "Unable to connect to Telnet server: " + tn_ip
telnet()
Und ich versuche durch alle Daten gehen es ausgibt (was ziemlich viel ist), bis ich zu fangen, was ich brauche. Obwohl es sich ziemlich gut einloggt und sogar die Daten findet, nach denen ich suche, und meine gefundene Nachricht drucke, versuche ich, die Verbindung mit Telnet offen zu halten, da andere Daten (oder wiederholte Daten) vorhanden sein können) Ich würde vermissen, wenn ich abgemeldet und wieder eingeloggt bin.
Weiß jemand, wie man das macht?
Haben Sie eine Liste bestimmter Informationen, die Sie benötigen, oder möchten Sie, dass die Telnet-Verbindung auf unbestimmte Zeit geöffnet bleibt? – VergeA
Vielen Dank für Ihren Kommentar! Ich suche nach mehreren Informationen. Wenn es ausgelöst wird, wird etwas anderes aktiviert, also würde ich gerne die Verbindung offen halten, während ich gleichzeitig scanne. – user5740843
Sie könnten das Telnet-Verbindungsobjekt zu einer Instanzvariablen einer Klasse machen. Führen Sie während der Konstruktion/Initialisierung der Klasse die Anmeldeprozeduren aus und rufen Sie dann die read_until() -Methode so oft auf, wie Sie benötigen, indem Sie sie an die Instanzvariable delegieren. Wenn die Klasse zerstört ist/wenn Sie die Verbindung nicht mehr benötigen, schließen Sie sie. – VergeA