Время работы telnet-соединения истекло через telnetlib при работе через cmd - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь использовать Telnet для подключения к моему удаленному устройству. При использовании telnet через cmd у меня не возникло проблем, и приглашение выглядит следующим образом

enter image description here

Как видите, для этого требуется:

  1. "пользователь>" (ответ "су") и затем
  2. "пароль>" (ответ "1234"), а затем приглашение
  3. "mp4100 #"

После написания "?" (даже без ввода) приглашение выдает огромную строку. Я пытаюсь имитировать это, но, похоже, ничего не работает ...

import telnetlib

HOST = "172.17.174.241"
user = 'su'
password = '1234'
time_out = 2
name = "mp4100"
prompt = name + '#'

tn = telnetlib.Telnet(HOST, timeout = time_out)
tn.set_debuglevel(100)

tn.read_until("user>", time_out)
tn.write(user + "\n")

if password:
    tn.read_until("password>", time_out)
    tn.write(password + "\n")

#tn.read_until(prompt, time_out)
tn.write('?')

print tn.read_all() # shouldn't this write the string that the prompt wrote?
tn.close()

Когда я запускаю это, оно просто зависает.


Редактировать : Я добавил тайм-аут в соединение, и именно там оно зависает. Устройство не будет подключаться через скрипт, хотя через cmd проблем не будет


Код немного отредактирован, чтобы показать, что я сейчас делаю. Вывод после добавления tn.set_debuglevel(100) (Каковы допустимые значения для этой функции? Не видел ее в справке doc / spyder)

Telnet(172.17.174.241,23): recv '\xff\xfb\x01'
Telnet(172.17.174.241,23): IAC WILL 1
Telnet(172.17.174.241,23): recv '\xff\xfb\x03'
Telnet(172.17.174.241,23): IAC WILL 3
Telnet(172.17.174.241,23): recv '\xff\xfc\x01'
Telnet(172.17.174.241,23): IAC WONT 1
Telnet(172.17.174.241,23): recv '\xff\xfc\x03'
Telnet(172.17.174.241,23): IAC WONT 3
Telnet(172.17.174.241,23): recv '\n\r'
Telnet(172.17.174.241,23): recv '\n\ruser>'
Traceback (most recent call last):
...