2016-04-07 20 views
0

ich einige Python-Code, der per Telnet auf einen OSPF-Daemon (von Quagga lief) verbindet und dann geschieht Folgendes:Python telnetlib READ_ALL hängt bis Timeout

tn.write("show ip ospf database router\n") 
tn.write("exit\n") 
my_text = tn.read_all() 

Wenn die Ausgabe von show ip OSPF-Datenbank-Router ist klein, das Skript funktioniert gut, aber wenn es groß ist (ca. 73kb) friert der Code im read_all() Anruf, bis es Timeouts.

Meine Frage ist: Warum passiert das? Gibt es eine Art maximale Ausgabe, die read_all verarbeiten kann?

ich sollten beachten, dass, wenn ich read_very_eager() statt READ_ALL() verwenden der Code funktioniert gut.

Vielen Dank im Voraus. Santiago Vidal.

Antwort

0

Sie können die Größe des Ausgangs mit der folgenden Zeile steuern:

   Telnet.set_debuglevel (debuglevel) 

die Debug-Ebene ein. Je höher der Wert von debuglevel ist, desto mehr Debug-Ausgabe erhalten Sie (auf sys.stdout).

Zum Beispiel:

tn.write("show ip ospf database router\n") 
tn.write("exit\n") 
my_text = tn.set_debuglevel(1000) 
my_text = tn.read_all()