Frage

Ich versuche, einige Telnet-Aktionen mit python3 zu automatisieren. So begann ich die Build-in telnetlib (nicht pexpect) zu verwenden.

Eigentlich funktioniert alles so weit, aber ich verstehe nicht vollständig, wie read_until Werke - eigentlich die Dokumentation sagt, dass Sie ein Timeout einstellen, und wenn die Suchzeichenfolge wird der Timeout sendet einen leeren Byte-Wert nicht gefunden oder oder wenn es eine andere Wert das ist die eine, die als Rückgabewert gespeichert werden kann!

Ist das sinnvoll?!

Wenn ich will, einen bestimmten Wert read_until - wie ich finde heraus, dass dieser Wert war wirklich denjenigen die Funktion lesen. Ich kann auch nicht herausfinden, wie zu überprüfen, ob das Timeout getroffen wurde.

Meine Abhilfe für jetzt ist:

output = telnet.read_until(str.encode(hostname), 3)
if re.search(hostname, bytes.decode(output), re.IGNORECASE):
   #do something when the output matches the searchstring
else:
   #stop the function

, aber das macht keinen Sinn für mich, also vielleicht Sie jetzt eine bessere Lösung

War es hilfreich?

Lösung

Ja, wenn Ihr Host-Name example.com ist, wird read_until etwas wie weijwrgnerg hgqwv blather example.com zurück. Außer wenn es die Hostnamen nicht nach drei Sekunden gefunden, wird es nur ausspucken, was es bis dahin bekommt ist. weijwrgnerg hg

Also ich denke, du tust es richtig fast. Sie wollen wahrscheinlich Ihre Hostnamen re.escape, andernfalls es als Regex interpretiert. Alternativ können Sie nur .endswith() Python verwenden. Und Sie können output.decode() tun, um eine Zeichenfolge zu erhalten (statt bytes.decode(output)).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top