Назад | Перейти на главную страницу

Имея только доступ по ssh, определите, является ли устройство маршрутизатором или коммутатором (Cisco и Juniper)

В нашей сети есть устройства Cisco и Juniper, и мне нужно создать скрипт на Python, чтобы определить, что они собой представляют: коммутаторы или маршрутизаторы.

У меня есть доступ по ssh, поэтому я могу show version и проанализируйте "JUNOS" или "Cisco", чтобы узнать поставщика. Но я не знаю, как узнать, является ли устройство роутером, коммутатором или чем-то еще.

Спасибо за помощь!

Это может быть довольно сложно сказать, потому что многие модели, продаваемые как коммутаторы, будут иметь функции маршрутизации, и у вас также могут быть случаи, когда маршрутизаторы используются как коммутаторы, то есть они не маршрутизируют трафик. Таким образом, даже если вы можете выяснить возможности устройства, вы действительно хотите знать его функции в ваш сеть.

У вас может быть много устройств, но у вас, вероятно, не так много разных моделей, поэтому вручную анализируйте вывод show version может быть достаточно, чтобы выяснить, какие у вас устройства жестяная банка делать.

Если вы просто не пытаетесь заполнить базу данных активов, вам нужно будет просмотреть конфигурации и выяснить, что такое каждое устройство. фактически настроил делать.

На устройстве Cisco может анализировать возможности устройства с помощью CDP (см. На устройстве cisco как вы показываете возможности? ), однако в вашей сети может быть отключен CDP.

Лучше всего было бы проверить, присутствуют ли интерфейсы Vlan (означает коммутируемое устройство) и существуют ли интерфейсы типа fastEthernet X / X / X (вероятно, коммутируемый маршрутизатор).

Используя эти два факта, вы получите довольно точное представление о том, что это за устройство, но оно специфично для Cisco.

Вы также можете использовать навигатор функций Cisco / справочник по Juniper для создания обнаружения с использованием названия модели (если вы знаете, какие устройства есть в вашей сети, в большинстве случаев у вас ограниченное количество моделей), что будет более точным, но специфичен для вашей сети.

Преимущество в том, что на этот раз он является универсальным, а не специфичным для одного бренда, и нет риска ошибочного обнаружения.

В качестве альтернативы вы можете использовать CMDB или программное обеспечение инвентаризации, чтобы подготовить эту информацию для дальнейшего использования, тогда вам просто нужно будет запросить свою базу данных, чтобы проверить, является ли это коммутатором или маршрутизатором.

Есть много способов сделать это.

Мой первый выбор - это SNMP, даже если вам нужно попробовать несколько строк. Вызовы выполняются быстрее и менее уязвимы для различий в версии кода. Вы можете скачать бесплатную копию солнечного ветра и закончить менее чем за час. Также гораздо проще создать сценарий взаимодействия по протоколу SNMP, чем ssh / cli.

Затем я бы использовал какую-то оболочку expect. Я неравнодушен к материалам perl, потому что он более стабилен и лучше документирован. Вы также можете написать сценарий ожидания и вызвать его из Python.

show version - очевидная команда, но она может различаться на разных устройствах. У вас есть список возможных платформ? Вы можете использовать регулярные выражения для сортировки из предоставленного списка, а затем поместить все остальное в неизвестную кучу. По мере сортировки неизвестных обновляйте сценарий, чтобы найти их автоматически.