вторник, 23 ноября 2010 г.

Применение Cisco IOS EEM CLI Applet для отслеживания состояния каналов.



   Задача


Необходимо отслеживать состояние IPSec каналов до филиалов. В случае изменения состояния отсылать сообщение на почту администраторов.
Оборудование центрального офиса – CISCO 38хх
Оборудование филиалов – CISCO 18хх
Шифрованный канал организован с использованием VTI.

Cisco IOS Embedded Event Manager (EEM)
Ссылки:

Cisco IOS Embedded Event Manager (EEM) позволяет запрограммировать реакцию устройства Cisco на различные события в реальном времени. EEM является частью операционной системы Cisco IOS. Решение EEM состоит из детекторов событий (Event Detectors), менеджера событий (Event Manager), а также механизма политик менеджера событий (Event Manager Policy Engine). Механизм политик управляет двумя типами политик, настраиваемых пользователями – Applet policies и Tcl policies.  

 Клиенты могут настроить политики для выполнения определенных действий в случае, если программное обеспечение Cisco IOS через встроенные детекторы событий  (show event manager detector all) распознает определенные события. Результатом является чрезвычайно мощный и гибкий набор инструментов, позволяющий автоматизировать многие задачи сетевого управления и контролировать работу Cisco IOS с целью повышения доступности, сбора информации и оповещения внешних систем или персонала о критических событиях.

Вариантов решения задачи несколько, остановимся на использовании CLI Applets. Поскольку у нас используются VTI для организации IPSec канала, то ситуация упрощается – будем отслеживать изменение состояния по сообщениям LINEPROTO-5-UPDOWN в syslog’е. Это позволит использовать один апплет для всех каналов.

//Инициализируем переменные, необходимые для отправки писем
event manager environment _email_server 192.168.1.10
event manager environment _email_to noc@headoffice.ru;admin@headoffice.ru
event manager environment _email_from cisco@headoffice.ru

// Создаем апплет
event manager applet VPNTunnelTrack

// Указываем интересующее нас событие из syslog’а
 event syslog occurs 1 pattern "LINEPROTO-5-UPDOWN"

// Вытаскиваем время события, описание интерфейса, статус интерфейса с помощью // regexp
 action 100 regexp "(..:..:..).*(Tunnel[0-9]+), changed state to (.*)" "$_syslog_msg" var time interface_name interface_state

// Проверяем, получилось ли вытащить
 action 200 if $_regexp_result eq 1

// Вытаскиваем строку с описанием интерфейса, изменившего статус
 action 300  cli command "show interface $interface_name | include Description"

// На всякий случай инициализируем переменную, в которую будем вытаскивать
// описание интерфейса
 action 400  set desc "The state of interface $interface_name has changed. Tunnel Description is not set. Please login to Cisco and describe interface $interface_name."

// Вытаскиваем описание интерфейса
 action 500  regexp "Description: (.*)\r" "$_cli_result" var desc

//Для каждого адреса в строке адресатов
action 600  foreach email "$_email_to" ";"

//Отправляем письмо
 action 700   mail server "$_email_server" to "$email" from "$_email_from" subject "$desc is $interface_state!" body "$desc got $interface_state  at $time, Moscow time."

//Конец цикла
 action 800  end

// Вот и все
 action 900 end

2 комментария:

  1. А как авторизовываться на почтовом сервере?

    ОтветитьУдалить
  2. How change above script ,to send the router to reboot if 1 SIP account is missing in "sh sip-ua register status"

    ОтветитьУдалить

Примечание. Отправлять комментарии могут только участники этого блога.