Я пытаюсь использовать Telnet для подключения к моему удаленному устройству. При использовании telnet через cmd у меня не возникло проблем, и приглашение выглядит следующим образом
![enter image description here](https://i.stack.imgur.com/yBCJm.png)
Как видите, для этого требуется:
- "пользователь>" (ответ "су") и затем
- "пароль>" (ответ "1234"), а затем приглашение
- "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):