Скрипт EEM — автоматическое описание порта с помощью cdp neighbor
-
Это скрипт апплета Cisco Embedded Event Manager (EEM), предназначенный для автоматического обновления описаний интерфейсов на коммутаторе/маршрутизаторе на основе информации о соседях CDP (Cisco Discovery Protocol). Позвольте мне разъяснить это шаг за шагом:
Что делает
скрипт Триггер: запускается при обнаружении нового соседа CDP на интерфейсе (event neighbor-discovery interface regexp .E[0-9/]+$ cdp add).
Проверка соседа: он проверяет, является ли соседнее устройство платформой Cisco (маршрутизатор, коммутатор, UCS, Nexus и т. д.), используя регулярное выражение в строке платформы CDP.
Обработка имени хоста: сокращает DNS-имя соседа до имени хоста (удаляет суффикс домена).
Анализ типа интерфейса: извлекает тип интерфейса соседа (например, GigabitEthernet, TenGigabitEthernet, FortyGigabitEthernet и т. д.) и преобразует его в короткий формат (Gi, Te, Fo и т. д.) с номером порта.
Классификация локального интерфейса: проверяет конфигурацию локального интерфейса на наличие:
Root guard → помечает как «DOWNLINK»
Политика QoS → помечает как «UPLINK»
Создание описания: создает новую строку описания в формате:
<UPLINK/DOWNLINK> - <NeighborHostname> - <NeighborInterface>
Проверка изменений: если текущее описание уже соответствует новому, ничего не делается (в syslog записывается сообщение о том, что изменения не требуются).
Действие по обновлению: если описание отличается, входит в режим настройки интерфейса и обновляет описание, а затем регистрирует изменение в syslog.
Пример результата
Предположим, что интерфейс GigabitEthernet1/0/1 подключается к соседнему коммутатору с именем SW1 через порт GigabitEthernet0/24.
Локальный интерфейс имеет root guard → «DOWNLINK»
Новое описание становится:
DOWNLINK - SW1 - Gi0/24
Скрипт автоматически применяет это описание.
апплет диспетчера событий auto-update-host-description авторизация обход
описания «Автоматическое обновление описания порта на основе информации о соседях CDP»
событие neighbor-discovery интерфейс regexp .E[0-9/]+$ cdp add
действие 0.0 комментарий «Регулярное выражение строки события: Решение, для какого интерфейса автоматически обновлять описание»
действие 1.0 комментарий «Проверка соседа CDP на предмет того, является ли он коммутатором или маршрутизатором»
действие 1.1 комментарий «Скрипт автоматического описания порта версии 001»
действие 1.2 regexp «(cisco|AIR|UCS|N5K|N9K)» "$_nd_cdp_platform"
action 1.3 if $_regexp_result eq "1"
action 1.4 comment "Обрезать доменное имя"
action 1.5 regexp "^([^.]+)" "$_nd_cdp_entry_name" совпадение dnsname
действие 4.0 regexp "([a-zA-z-])([0-9/])" "$_nd_port_id" portm portn portnum
действие 4.10 regexp "GigabitEthernet" "$_nd_port_id"
действие 4.11 если $_regexp_result eq "1"
действие 4.12 установить port_type "Gi$portnum"
действие 4.13 конец
действия 4.14 regexp "TenGigabitEthernet" "$_nd_port_id"
действие 4.15 если $_regexp_result eq "1"
действие 4.16 установить port_type "Te$portnum"
действие 4.17 конец
действия 4.18 regexp "TwentyFiveGigE" "$_nd_port_id"
действие 4.19 если $_regexp_result eq "1"
действие 4.20 установить port_type "Twe$portnum"
действие 4.21 конец
действия 4.22 regexp "HundredGigE" "$_nd_port_id"
действие 4.23 если $_regexp_result eq "1"
действие 4.24 установить port_type "Hu$portnum"
действие 4.25 конец
действия 4.26 regexp "Br-Ethernet" "$_nd_port_id"
действие 4.27 если $_regexp_result eq "1"
действие 4.28 установить port_type "Eth$portnum"
действие 4.29 конец
действия 4.30 regexp "TwoGigabitEthernet" "$_nd_port_id"
действие 4.31 если $_regexp_result eq "1"
действие 4.32 установить port_type "Tw$portnum"
действие 4.33 конец
действия 4.34 regexp "FortyGigabitEthernet" «$_nd_port_id»
действие 4.35 если $_regexp_result eq «1»
действие 4.36 установить port_type «Fo$portnum»
действие 4.37 конец
действия 4.99 установить int «$port_type»
действие 4.5 regexp «([a-zA-z])» "$_nd_port_id"
действие 5.10 комментарий "Проверить конфигурацию интерфейса на наличие root guard или qos"
действие 5.14 команда cli "enable"
действие 5.15 команда cli "config t"
действие 5.16 команда cli "do show running-config interface $_nd_local_intf_name | i guard root|QOS"
действие 5.17 regexp "Интерфейс: (.)" "$_cli_result" совпадает с $_nd_local_intf_name
действие 5.18 установить interface_config "$_cli_result"
действие 5.19 установить plat2 ""
действие 5.20 regexp "guard root" "$interface_config"
действие 5.21 если $_regexp_result eq "1"
действие 5.22 установить plat2 "DOWNLINK"
действие 5.23 иначе
действие 5.24 regexp "QOS-OUT|QOS_OUT" "$interface_config"
действие 5.25 if $_regexp_result eq "1"
действие 5.26 set plat2 "UPLINK"
действие 6.37 end
действие 6.38 end
действие 6.40 set idt1 "$plat2"
действие 8.0 comment "Проверить старое описание, если есть, и не вносить изменений, если idt - dnsname - int одинаковы»
действие 8.2 команда cli «do show interface $_nd_local_intf_name | incl Description:»
действие 8.21 установить olddesc «<none>»
действие 8.22 установить olddesc_sub1 «<none>»
действие 8.23 regexp «Description: (.+)\r" "$_cli_result" olddesc olddesc_sub1
action 8.24 set newdesc "$idt1 - $dnsname - $int"
action 8.25 if $olddesc_sub1 eq "$newdesc"
action 8.26 syslog msg "Скрипт EEM НЕ изменил описание $_nd_local_intf_name, так как удаленное имя DNS и интерфейс не изменились"
action 8.27 exit 10
action 8.28 end
action 8.3 cli command "interface $_nd_local_intf_name"
action 8.4 cli command "description $newdesc"
action 8.6 syslog msg "Скрипт EEM обновил описание на $_nd_local_intf_name с $olddesc на Description: $newdesc"
action 9.10 exit
action 9.9 end -
Здесь уже есть хорошая дискуссия: [)
Здравствуйте! Похоже, вам интересна эта беседа, но у вас пока нет учетной записи.
Вы устали просматривать одни и те же посты каждый раз, когда заходите на сайт? После регистрации, вам не придётся искать обсуждения в которых вы принимали участие, настройте уведомления о новых сообщениях так как вам это удобно (по электронной почте или уведомлением). У вас появится возможность сохранять закладки и ставить лайки постам, чтобы выразить свою благодарность другим участникам сообщества.
С вашими комментариями этот пост может стать ещё лучше 💗
Зарегистрироваться Войти