Я написал скрипт на Python, который может последовательно входить на несколько устройств, читая CSV-файл, в котором перечислены разные IP-адреса. Оттуда он выводит файл для каждого устройства с содержимым нескольких команд, которые передаются на устройства через скрипт. Так что я зашел довольно далеко. Проблема, с которой я сталкиваюсь, заключается в том, что иногда скрипт зависает. И это потому, что некоторые устройства имеют разные версии программного обеспечения и не поддерживают определенные команды, которые им передаются. Отличие, на которое я обращаю внимание, — это приглашение после входа в систему. Например, при входе в устройство типа A есть командная строка xyz#. Устройство типа B имеет тип команды abc:. Это тот же производитель, просто другая модель и/или версия программного обеспечения. В зависимости от командной строки я знаю, какие команды я могу запустить на этом устройстве без зависания сценария. Итак, что мне нужно сделать, так это после успешного входа в систему, в зависимости от командной строки, которую я получаю, запуская набор определенных команд.
Я могу опубликовать часть своего кода, если это поможет, но я действительно хочу выяснить, возможно ли это вообще. А раз так, то указатели. Несколько предложений о том, что я мог бы попробовать. После работы с Python в течение нескольких месяцев я знаю, что должен быть способ сделать это. Обычно я не публикую, потому что могу проработать чужие посты и разработать работающее решение. Но я немного поработал над этим и не смог собрать его воедино, поэтому ищу помощи.
-Шейн
РЕДАКТИРОВАТЬ
На данный момент я все еще не могу написать код, который определил бы командную строку. Ну, по крайней мере, пока сессия телнета открыта. Я могу подключиться по телнету, запустить несколько команд и закрыть сеанс. Затем я могу записать результаты в файл. И оттуда прочитайте файл, чтобы определить подсказку. Но в идеале я хотел бы иметь возможность открывать сеанс telnet, запускать команду для определения приглашения, пока сеанс еще открыт, читать его, пока сеанс запущен, а затем на основе приглашения запускать определенные команды.
Проблема, похоже, заключается в невозможности прочитать какой-либо вывод команды, пока сеанс telnet все еще работает. Сеанс должен быть закрыт, а затем записан весь вывод в файл. Затем прочитайте файл, чтобы определить командную строку, определите, какие команды выполнять на основе приглашения, затем откройте новый сеанс telnet и выполните эти команды.
Должен ли я принять тот факт, что мне нужно закрыть сеанс telnet, записать данные в файл, прочитать его, чтобы определить приглашение, а затем снова вернуться к части сценария входа в систему? Или я что-то упускаю? Не уверен, что ясно выразился в своем описании.