Автоматизация роутеров irzOS с помощью утилиты Event

#irzOS #роутеры #r0 #r2 #r10 #r50
Статья справедлива для версий irzOS 1.1 и выше.

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

Настройка осуществляется в разделе /event.

В качестве примера используется интерфейс роутера iRZ R50. Для других моделей интерфейс может незначительно отличаться.
event 1

Каждое событие (event) состоит из четырех ключевых параметров.

Описание параметров

Поле

Описание

Trigger

Определяет подсистему-источник события:

defaultroute – смена и/или потеря маршрута по умолчанию
gpio – переход порта в состояние high и/или low
interface – включение и/или выключение интерфейса
ipsec – установление и/или разрыв туннеля IPsec
pinger – положительный и/или отрицательный результат проверки pinger
scheduler – выполнение действий по расписанию
sms – входящее SMS-сообщение

Target

Конкретный объект-источник события в рамках выбранного триггера. В частности, если в качестве триггера выбран gpi, то источником будет конкретный порт, например, gpi_1

Value

Состояние объекта-источника Target, при достижении которого будет срабатывать заданное действие Action. Может иметь значения 0, 1, any, текст сообщения

Action

CLI-команда или несколько команд, разделенных точкой с запятой

После настройки и нажатия Apply на панели со статистикой отображается количество воспроизведений события и его текущий статус.

event

Поддерживается создание нескольких событий для одного триггера (полное совпадение полей Trigger, Target и Value). В этом случае они будут выполняться согласно своим порядковым номерам. Изменить порядок выполнения событий можно с помощью перестановки строк в веб-интерфейсе либо воспользовавшись следующей командой:

/event <старый_номер> reorder position=<новый_номер>

Пример 1

Задача:

Отправлять SMS «gpi_1 high» или «gpi_1 low» на заданный номер при изменении состояния gpi_1.

Решение:

  1. В разделе /peripheral → gpio → gpi_1 установить Trigger в значение both, чтобы событие срабатывало при любом изменении логического уровня на пине.

peripheral gpio
  1. Перейти в раздел /event и нажать Add, чтобы добавить новое событие.

  2. В открывшемся окне для Trigger выбрать значение gpi.

trigger gpi
  1. В открывшейся форме задать параметры по примеру и нажать Apply.

    • Target: gpi_1

    • Value: 1

    • Action: /mobile sms send-sms phone-number=+7XXXXXXXXX message="gpi_1 high" modem=modem1

event0
  1. Аналогично добавить еще одно событие со следующими параметрами и нажать Apply.

    • Trigger: gpi

    • Target: gpi_1

    • Value: 0

    • Action: /mobile sms send-sms phone-number=+7XXXXXXXXX message="gpi_1 low" modem=modem1

Настройка в CLI

/peripheral gpio gpi_1
trigger both
apply
/event add trigger=gpi
target gpi_1
value 1
action /mobile sms send-sms phone-number=+7XXXXXXXXX message="gpi_1 high" modem=modem1
apply
/event add trigger=gpi
target gpi_1
value 0
action /mobile sms send-sms phone-number=+7XXXXXXXXX message="gpi_1 low" modem=modem1
apply

Пример 2

Задача:

Перевести порт gpo_1 в состояние high при получении входящего сообщения «gpo_1 high».

Решение:

  1. Перейти в раздел /event и нажать Add, чтобы добавить новое событие.

  2. В открывшемся окне для Trigger выбрать значение sms.

trigger sms
  1. В открывшейся форме задать параметры по примеру и нажать Apply.

    • Target: номер телефона, с которого придет SMS

    • Value: gpo_1 hight – текст сообщения

    • Action: /peripheral gpio gpo_1 value high; /peripheral gpio gpo_1 apply

event0 1

Настройка в CLI

/event add trigger=sms
target +7XXXXXXXXXX
value gpo_1 high
action /peripheral gpio gpo_1 value high; /peripheral gpio gpo_1 apply
apply

Пример 3

Задача:

Перезагрузка роутера каждый день в 23:00.

Решение:

  1. Перейти в раздел /event и нажать Add, чтобы добавить новое событие.

  2. В открывшемся окне для Trigger выбрать значение scheduler.

trigger scheduler
  1. В открывшейся форме задать параметры по примеру и нажать Apply.

    • Target: 23:00

    • Action: /system management reboot

event0 2

В данном примере Target – это параметр, который задает либо точное время выполнения события, либо периодичность его повторения. Например:

  • ~12h – выполнять каждые 12 часов

  • ~30m – выполнять каждые 30 минут

  • 23:00 – выполнять каждый день в это время

Настройка в CLI

/event add trigger=scheduler
target 23:00
action /system management reboot
apply

Пример 4

Задача:

Выполнять перезапуск клиентского L2TP-туннеля к серверу при смене маршрута по умолчанию .

Чтобы это событие корректно работало, в настройках L2TP-туннеля параметр Local IP должен иметь значение auto.

Решение:

  1. Перейти в раздел /event и нажать Add, чтобы добавить новое событие.

  2. В открывшемся окне для Trigger выбрать значение defaultroute.

trigger defaultroute
  1. В открывшейся форме задать параметры по примеру и нажать Apply.

    • Value: change

    • Action: /tunnel l2tp l2tp_tunnel apply

event0 3

Настройка в CLI

/event add trigger=defaultroute
value change
action /tunnel l2tp l2tp_tunnel apply
apply

 

Все настройки навсегда сохраняются в память роутера только после выполнения команды /system → config → commit или нажатия кнопки commit в web-интерфейсе.