2016-10-12 5 views
2

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?

+0

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

+0

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

+0

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

Antwort

2

Scheint so, als ob Sie sich einmal mit einem externen Gerät verbinden und eine Nachricht drucken möchten, sobald Sie eine bestimmte Zeichenfolge sehen.

import sys 
import telnetlib 
tn_ip = "0.0.0.0" 
tn_port = "23" 
tn_username = "xxxxx" 
tn_password = "xxxx" 

searchfor = "Specificdata" 


def telnet(): 
    try: 
     tn = telnetlib.Telnet(tn_ip, tn_port, 15) 
    except: 
     print "Unable to connect to Telnet server: " + tn_ip 
     return 
    tn.set_debuglevel(100) 
    tn.read_until("login: ") 
    tn.write(tn_username + "\n") 
    tn.read_until("Password: ") 
    tn.write(tn_password + "\n") 
    while True: 
     tn.read_until(searchfor) 
     print "Found it" 

telnet()