Python скрипт заполнения поля Description порта на коммутаторах Catalyst

Автор: | 2019-04-09

Для удобной поддержки инфраструктуры ЛВС, оказывается не лишнем поле description на коммутаторах. Разумеется прописывать руками, при большом размере сети, — долго, хлопотно и можно ошибиться. Поэтому, резонно данный процесс доверить скрипту. Как это сделать для коммутаторов Cisco Catalyst на языке Python далее в заметке.

Описание

Для работы скрипта необходимо установить Python 3 и библиотеку telnetlib.

Скрипт имеет 2 режима работы, которые задаются аргументами при запуске скрипта:

  • show — подключиться к коммутаторам и вывести то, что будет записано в поле информации;
  • write — подключться к коммутаторам и установить в поле description имена подключеных к ним хостов. Дополнительно, можно указать аргумент save, чтобы сохранить результаты.

В скрипте описан класс cisco_telnet со следующими методами:

  • Конструктор — инициализирует переменные. Принимает строковые параметры IP-адрес коммутатора, имя пользователя, пароль;
  • connect — Выполняет подключение к коммутатору и отключает постраничный вывод;
  • command — Выполняет команду на коммутаторе. Принимает строку с командой и ожидаемый по завершении символ (по умолчанию — #);
  • set_description — Выполняет команды установки поля description. Принимает имя интерфейса и строку с описанием;
  • save_config — Сохраняет конфигурацию.

В списке словарей switches хранится информация о коммутаторах:

  • ip — IP-адрес устройства;
  • user — имя пользователя;
  • password — пароль;
  • ignore_ports — порты, которым не нужно менять описание;
  • has_arp — коммутатор имеет ARP-таблицу, которая будет использована для поиска;
  • vlans — список VLAN, которые нас интересуют.

Скрипт работает так: в цикле подключается к коммутаторам из списка switches. На устройствах, у которых есть ключ has_arp, выполняется команда show arp, результаты которой, генератором словарей, записываются в общий словарь arp, содержащий соответствие MAC- и IP-адреса. Выполняется команда show mac address и составляется словарь switches[‘mac’] в который помещаются MAC-адрес, VLAN и имя порта.
Далее, для каждого коммутатора из списка делается сопоставление MAC-адреса на порте с ARP-таблицей.
После чего, выполняется разрешение IP-адреса в имя хоста, основываясь на результате запроса к DNS и имя записывается в поле description. Если для IP-адреса обратной записи в DNS нет, то запишется IP-адрес. При этом, в зависимости от аргументов командной строки, происходит запись поля description.
Ну и в конце сохранение конфигурации, если есть соответствующий флаг, и отключение от коммутаторов.

Скрипт

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *