Network парень играет с кодировкой здесьPython telnetlib подскажет на нестандартном порту
Я очень простой сценарий, который telnets к коммутатору/маршрутизатору, работает несколько команд и заканчивается. Все делается на порте 23. Проблема заключается в том, что когда я подключаюсь к устройству через терминальный сервер или к виртуальному маршрутизатору (csr1000v) на хосте ESXi, через нестандартный порт, я не получаю приглашение, и я не могу запускать команды.
В SecureCRT Я могу подключиться к ним без проблем, но я должен нажать Enter, прежде чем мне будет предложено ввести подсказку. В обычном коммутаторе/маршрутизаторе сразу появляется подсказка. Я попытался вставить telnet.write (b "\ r \ n") после подключения, но это не имело никакого значения.
Я также установил, что если я вызову приглашение через SecureCRT, отключите и запустите скрипт, он будет успешно выполнен. Я читал telnetlib документы без чего-либо, что выглядит, как это помогло бы
telnet = telnetlib.Telnet(HOST,port)
#telnet.write(b" \r\n")
telnet.read_until(b"Username: ")
telnet.write(user.encode('ascii'))
telnet.read_until(b"Password: ")
telnet.write(password.encode('ascii'))
telnet.read_until(b">")
telnet.write(b"enable\r\n")
telnet.read_until(b"Password: ")
telnet.write(enable_password.encode('ascii'))
telnet.read_until(b"#")
telnet.write(b"term length 0\r\n")
telnet.read_until(b"#")
response = send_command(telnet,"sh run")
print (response)
response = send_command(telnet," sh ip int br | ex una")
print (response)
Интересно, не последователен ли последовательный порт. Попробуйте 'time.sleep (1)' и 'telnet.write (b '\ r \ n')', в указанном порядке, сразу после подключения. –