Mikrotik: звуковые уведомления при поднятии и падении PPPoE соединения
11 августа 2023
Иногда полезно узнавать о падении/поднятии PPPoE линка не только по светодиоду на передней панели роутера (что легко реализуется штатными средствами), но и по звуковому сигналу (для моделей с встроенным бипером). В этом нам поможет возможность написания скриптов в микротике.
Реализовать это можно несколькими способами:
- Netwatch — самый простой способ. Но он сработает не только на отсутствие линка, но и на падение проверяемого хоста, поэтому не всегда надёжный. Можно попробовать пинговать шлюз провайдера. Но в любом случае будет небольшой временной лаг от потери линка до срабатывания проверки.
- PPP Profiles — профили позволяют задать скрипты, которые будут автоматически выполняться при установке соединения и разрывах. То, что нам и нужно:
Но есть минусы: скрипт «падения» будет вызываться каждый раз при неудачной попытке установки соединения, то есть будет повторяться каждые несколько секунд. Попробуем от этого избавиться.
Воспользуемся возможностью задания глобальных переменных в скриптах. Такая переменная будет хранить своё значение между вызовами скрипта. Для этого объявим глобальную переменную :global pppoestate и при появлении линка будем её присваивать значению true. Затем воспроизведём короткий звуковой сигнал. Итоговый скрипт будет выглядеть следующим образом:
:global pppoestate :set pppoestate true :beep frequency=1300 length=100ms; :delay 100ms; :beep frequency=1550 length=100ms;
Сохраним его в скриптах (System → Scripts) под именем if_up. Права выставляем как на картинке:
Аналогично пишем скрипт для падения линка. В нём мы проверяем текущее состояние переменной pppoestate и если оно не равно false, то только тогда воспроизводим звуковой сигнал. Затем присваиваем этой переменной значение false. В результате данный скрипт будет воспроизводить звук только при первом запуске (и пока не запустится скрипт if_ip):
:global pppoestate
:if ($pppoestate != false) do={
:beep frequency=1300 length=100ms;
:delay 200ms;
:beep frequency=1300 length=100ms;
:delay 200ms;
:beep frequency=1300 length=100ms;
}
:set pppoestate false
Сохраняем его под именем if_down:
Теперь полученные скрипты необходимо вызывать из PPP профиля:
Откройте профиль вашего PPPoE соединения. Если не знаете, какой используется, то можно посмотреть в настройках самого соединения:
На вкладке Scripts выбранного профиля теперь нужно прописать вызов сохранённых скриптов. Делается это с помощью двух команд:
/system script run if_up
/system script run if_down
Соответственно, должно получиться так:






