2016-03-23 13 views
1

Ich führe ein paar Befehle auf einem Remote-Rechner aus, der Linux über eine Telnet-Sitzung mit telnet lib ausführt. Wenn ich den folgenden geben:Begrenzen oder begrenzen Sie read_very_eager() in Python

tn.write("<binary_name>") 
time.sleep(10) 
tn.write("cat <path_of_output_file>") 
rd_buf=tn.read_very_eager() 
print(rd_buf) 

es gibt den Ausgang der binären und die Ausgabe von cat Befehl. Während ich nur die Ausgabe des Befehls wünschen. Ich habe nur mit read_very_eager und read_until gearbeitet. Wie beschränke ich meine Puffervariable, um nur den Inhalt des Befehls cat zu halten?

Antwort

0

Nach ein bisschen herumspielen mit read_until() und read_very_eager(), habe ich endlich das gelöst. Alles, was ich dies tun musste, war:

tn.write("<binary_name>") 
time.sleep(10) 
junk=tn.read_very_eager() 
tn.write("cat <path_of_output_file>") 
rd_buf=tn.read_very_eager() 
print(rd_buf) 

Mit dem Zusatz von 1 Leitung (junk=tn.read_very_eager()), ich bin in der Lage zu erreichen, was ich wollte. Unter Angabe des Python offizielle Dokumentation:

Telnet.read_very_eager()

alles lesen, die ohne Blockierung in I/O sein kann (eifrig).

nahm ich ein Stichwort aus dieser und machte das Skript mit Nachdruck das „Lesen“ zu stoppen. Und fang wieder von vorne an, was dem Zweck diente.