Я пишу сценарий Python для разбора некоторых данных с удаленного сервера телнет на порт 10001. В основном, когда я типа:telnetlib read_until() не соответствует Ничего
$ telnet <host> 10001
терминал распечатывает:
Trying <host>...
Connected to static-<host>.nycmny.fios.verizon.net.
Escape character is '^]'.
# empty line for prompt
на пустой строке комментария, что то, где я должен ввести такие команды, как следующие ('\n'
стендов для удара Обратно):
^Ai20101\n
# server prints out data
somedatalinehere
^]
# escape to telnet prompt like below
telnet>
telnet> quit\n
connection closed.
# returns to local terminal prompt
Однако, когда я делаю это в 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.
Спасибо, но я все равно получил пустую строку точно так же. Однако я не понимаю вашего объяснения. Можете ли вы уточнить? Я знаю, что '' 'это приглашение от моего клиента, но тогда почему я должен читать его с помощью' read_until ("$") '? – PieOhPah
@PieOhPah, когда вы успешно подключаетесь к серверу, используя только «telnet» (еще не Python), вы возвращаете это приглашение _ от сервера_. Скопируйте его и вставьте вместо знака доллара в моем примере. – ForceBru
Можете ли вы отредактировать свой ответ, чтобы уточнить, что вы пытаетесь сказать относительно ответа от сервера, который я разместил? Это именно то, что отвечает сервер, и нет никакой подсказки, как '' 'где угодно. – PieOhPah