<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Скрипт EEM — автоматическое описание порта с помощью cdp neighbor]]></title><description><![CDATA[<p dir="auto">Это скрипт апплета Cisco Embedded Event Manager (EEM), предназначенный для автоматического обновления описаний интерфейсов на коммутаторе/маршрутизаторе на основе информации о соседях CDP (Cisco Discovery Protocol). Позвольте мне разъяснить это шаг за шагом:<br />
Что делает<br />
скрипт Триггер: запускается при обнаружении нового соседа CDP на интерфейсе (event neighbor-discovery interface regexp .<em>E</em>[0-9/]+$ cdp add).<br />
Проверка соседа: он проверяет, является ли соседнее устройство платформой Cisco (маршрутизатор, коммутатор, UCS, Nexus и т. д.), используя регулярное выражение в строке платформы CDP.<br />
Обработка имени хоста: сокращает DNS-имя соседа до имени хоста (удаляет суффикс домена).<br />
Анализ типа интерфейса: извлекает тип интерфейса соседа (например, GigabitEthernet, TenGigabitEthernet, FortyGigabitEthernet и т. д.) и преобразует его в короткий формат (Gi, Te, Fo и т. д.) с номером порта.<br />
Классификация локального интерфейса: проверяет конфигурацию локального интерфейса на наличие:<br />
Root guard → помечает как «DOWNLINK»<br />
Политика QoS → помечает как «UPLINK»<br />
Создание описания: создает новую строку описания в формате:<br />
&lt;UPLINK/DOWNLINK&gt; - &lt;NeighborHostname&gt; - &lt;NeighborInterface&gt;<br />
Проверка изменений: если текущее описание уже соответствует новому, ничего не делается (в syslog записывается сообщение о том, что изменения не требуются).<br />
Действие по обновлению: если описание отличается, входит в режим настройки интерфейса и обновляет описание, а затем регистрирует изменение в syslog.<br />
Пример результата<br />
Предположим, что интерфейс GigabitEthernet1/0/1 подключается к соседнему коммутатору с именем SW1 через порт GigabitEthernet0/24.<br />
Локальный интерфейс имеет root guard → «DOWNLINK»<br />
Новое описание становится:<br />
DOWNLINK - SW1 - Gi0/24<br />
Скрипт автоматически применяет это описание.<br />
апплет диспетчера событий auto-update-host-description авторизация обход<br />
описания «Автоматическое обновление описания порта на основе информации о соседях CDP»<br />
событие neighbor-discovery интерфейс regexp .<em>E</em>[0-9/]+$ cdp add<br />
действие 0.0 комментарий «Регулярное выражение строки события: Решение, для какого интерфейса автоматически обновлять описание»<br />
действие 1.0 комментарий «Проверка соседа CDP на предмет того, является ли он коммутатором или маршрутизатором»<br />
действие 1.1 комментарий «Скрипт автоматического описания порта версии 001»<br />
действие 1.2 regexp «(cisco|AIR|UCS|N5K|N9K)» "$_nd_cdp_platform"<br />
action 1.3 if $_regexp_result eq "1"<br />
action 1.4 comment "Обрезать доменное имя"<br />
action 1.5 regexp "^([^.]+)" "$_nd_cdp_entry_name" совпадение dnsname<br />
действие 4.0 regexp "([a-zA-z-]<em>)([0-9/]</em>)" "$_nd_port_id" portm portn portnum<br />
действие 4.10 regexp "GigabitEthernet" "$_nd_port_id"<br />
действие 4.11 если $_regexp_result eq "1"<br />
действие 4.12 установить port_type "Gi$portnum"<br />
действие 4.13 конец<br />
действия 4.14 regexp "TenGigabitEthernet" "$_nd_port_id"<br />
действие 4.15 если $_regexp_result eq "1"<br />
действие 4.16 установить port_type "Te$portnum"<br />
действие 4.17 конец<br />
действия 4.18 regexp "TwentyFiveGigE" "$_nd_port_id"<br />
действие 4.19 если $_regexp_result eq "1"<br />
действие 4.20 установить port_type "Twe$portnum"<br />
действие 4.21 конец<br />
действия 4.22 regexp "HundredGigE" "$_nd_port_id"<br />
действие 4.23 если $_regexp_result eq "1"<br />
действие 4.24 установить port_type "Hu$portnum"<br />
действие 4.25 конец<br />
действия 4.26 regexp "Br-Ethernet" "$_nd_port_id"<br />
действие 4.27 если $_regexp_result eq "1"<br />
действие 4.28 установить port_type "Eth$portnum"<br />
действие 4.29 конец<br />
действия 4.30 regexp "TwoGigabitEthernet" "$_nd_port_id"<br />
действие 4.31 если $_regexp_result eq "1"<br />
действие 4.32 установить port_type "Tw$portnum"<br />
действие 4.33 конец<br />
действия 4.34 regexp "FortyGigabitEthernet" «$_nd_port_id»<br />
действие 4.35 если $_regexp_result eq «1»<br />
действие 4.36 установить port_type «Fo$portnum»<br />
действие 4.37 конец<br />
действия 4.99 установить int «$port_type»<br />
действие 4.5 regexp «([a-zA-z]<em>)» "$_nd_port_id"<br />
действие 5.10 комментарий "Проверить конфигурацию интерфейса на наличие root guard или qos"<br />
действие 5.14 команда cli "enable"<br />
действие 5.15 команда cli "config t"<br />
действие 5.16 команда cli "do show running-config interface $_nd_local_intf_name | i guard root|QOS"<br />
действие 5.17 regexp "Интерфейс: (.</em>)" "$_cli_result" совпадает с $_nd_local_intf_name<br />
действие 5.18 установить interface_config "$_cli_result"<br />
действие 5.19 установить plat2 ""<br />
действие 5.20 regexp "guard root" "$interface_config"<br />
действие 5.21 если $_regexp_result eq "1"<br />
действие 5.22 установить plat2 "DOWNLINK"<br />
действие 5.23 иначе<br />
действие 5.24 regexp "QOS-OUT|QOS_OUT" "$interface_config"<br />
действие 5.25 if $_regexp_result eq "1"<br />
действие 5.26 set plat2 "UPLINK"<br />
действие 6.37 end<br />
действие 6.38 end<br />
действие 6.40 set idt1 "$plat2"<br />
действие 8.0 comment "Проверить старое описание, если есть, и не вносить изменений, если idt - dnsname - int одинаковы»<br />
действие 8.2 команда cli «do show interface $_nd_local_intf_name | incl Description:»<br />
действие 8.21 установить olddesc «&lt;none&gt;»<br />
действие 8.22 установить olddesc_sub1 «&lt;none&gt;»<br />
действие 8.23 regexp «Description: (.+)\r" "$_cli_result" olddesc olddesc_sub1<br />
action 8.24 set newdesc "$idt1 - $dnsname - $int"<br />
action 8.25 if $olddesc_sub1 eq "$newdesc"<br />
action 8.26 syslog msg "Скрипт EEM НЕ изменил описание $_nd_local_intf_name, так как удаленное имя DNS и интерфейс не изменились"<br />
action 8.27 exit 10<br />
action 8.28 end<br />
action 8.3 cli command "interface $_nd_local_intf_name"<br />
action 8.4 cli command "description $newdesc"<br />
action 8.6 syslog msg "Скрипт EEM обновил описание на $_nd_local_intf_name с $olddesc на Description: $newdesc"<br />
action 9.10 exit<br />
action 9.9 end</p>
]]></description><link>https://sla247.ru/forum/topic/1614/скрипт-eem-автоматическое-описание-порта-с-помощью-cdp-neighbor</link><generator>RSS for Node</generator><lastBuildDate>Fri, 15 May 2026 06:42:09 GMT</lastBuildDate><atom:link href="https://sla247.ru/forum/topic/1614.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 24 Feb 2026 20:48:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Скрипт EEM — автоматическое описание порта с помощью cdp neighbor on Tue, 24 Feb 2026 20:48:27 GMT]]></title><description><![CDATA[<p dir="auto">Здесь уже есть хорошая дискуссия: [)</p>
]]></description><link>https://sla247.ru/forum/post/12115</link><guid isPermaLink="true">https://sla247.ru/forum/post/12115</guid><dc:creator><![CDATA[balaji.bandi]]></dc:creator><pubDate>Tue, 24 Feb 2026 20:48:27 GMT</pubDate></item></channel></rss>