Я работаю над сценарием для извлечения настроек из устройств Cisco в GNS3. В настоящее время он использует жестко запрограммированный IP-адрес и порт из-за другой отдельной проблемы, но это код, который я сейчас использую.
import getpass
import telnetlib
print "Getting running-config 127.0.0.1:5002"
tn = telnetlib.Telnet("127.0.0.1","5002")
tn.write("terminal length 0\n")
tn.write("show run\n")
tn.write("exit\n")
readoutput = tn.read_until("exit")
saveoutput = open("C:\Programdata\switch.txt","w")
saveoutput.write(readoutput)
saveoutput.write("\n")
saveoutput.close
print tn.read_all()
Если я закомментирую блоки кода readouput
и saveoutput
, Скрипт проходит так быстро, как я ожидал. Однако, когда я оставляю этот код там, он просто сидит и зависает. Я поместил команды print () для проверки, и он зависает в строке считывания. Я пробовал оба tn.read_all
& tn.read_until
(без и без строкового параметра), и ни один из них не работает.
Несмотря на то, что выходные данные не работают, я знаю, что что-то происходит, потому что, если я lnet в переключитесь с помощью telnet 127.0.0.1 5002
в командной строке, он появится без проблем, а также сможет проходить через мои терминальные команды.
Редактировать: Сегодня я провел больше испытаний с этим и выяснил, используя много таймеров сна и распечатывая в терминале, что происходит. Как выяснилось, по какой-то причине сеанс te lnet на самом деле не нажимает ввод, когда это необходимо. Я попытался изменить tn.write("text\n")
на tn.write("text" + "\n")
и даже разбить его на две команды записи, но ни одна из них не работает. Ниже сеанс te lnet, который я открыл после нескольких неудачных попыток заставить скрипт работать. Заметьте, все команды просто стоят в очереди? Если я изменю вывод вывода на «xit», который представляет собой текст в первой строке консоли ios, он найдет его в te lnet и напечатает все в сеансе te lnet до этой точки.
Если кто-нибудь знает, почему "\n"
на самом деле не нажимает Enter, я был бы очень признателен за помощь, поскольку это должно стать моим последним серьезным препятствием на пути создания программы, этот скрипт является частью работы.