Ich bin ein Python-Skript zu schreiben 10001. Grundsätzlich einige Daten von einem Remote-Telnet-Server Port zu analysieren, wenn ich schreibe:telnetlib read_until() paßt nicht alles
$ telnet <host> 10001
Der Terminal druckt:
Trying <host>...
Connected to static-<host>.nycmny.fios.verizon.net.
Escape character is '^]'.
# empty line for prompt
auf die leere Zeile in dem Kommentar, der ist, wo ich Befehle wie die folgenden ('\n'
steht für das schlagen zurück) geben sollte:
^Ai20101\n
# server prints out data
somedatalinehere
^]
# escape to telnet prompt like below
telnet>
telnet> quit\n
connection closed.
# returns to local terminal prompt
Allerdings, wenn ich die in Python:
tn = telnetlib.Telnet(host, 10001)
tn.read_until("\r\n", timeout=1) # nothing matched, returns ''
tn.read_until("", timeout=1) # nothing matched, returns ''
# thus
tn.write("^Ai20101\n")
time.sleep(0.1) # wait 0.1s for next prompt
tn.write("^]")
time.sleep(0.1)
tn.write("quit\n")
tn.read_all() # This hangs as if connection wasn't closed.
Danke, aber ich habe immer noch eine leere Saite. Allerdings verstehe ich deine Erklärung nicht wirklich. Kannst du es ausarbeiten? Ich weiß '$' ist die Eingabeaufforderung von meinem Client, aber warum sollte ich es dann mit 'read_until (" $ ")' 'lesen? – PieOhPah
@PieOhPah, wenn Sie erfolgreich eine Verbindung zum Server mit nur 'Telnet' herstellen (noch kein Python), erhalten Sie diese Eingabeaufforderung _vom Server_ zurück. Kopieren Sie es und fügen Sie anstelle des Dollarzeichens in meinem Beispiel ein. – ForceBru
Können Sie Ihre Antwort bearbeiten, um zu klären, was Sie in Bezug auf die Antwort von dem Server, den ich gepostet habe, sagen möchten? Es ist genau das, worauf der Server antwortet, und nirgends gibt es eine Aufforderung wie '$'. – PieOhPah