| Предыдущая версия справа и слева
Предыдущая версия
Следующая версия
|
Предыдущая версия
|
mikrotik:rb951ui-2nd:routeros:tools:netwatch [2020/12/02 22:56] Николай Солошин |
mikrotik:rb951ui-2nd:routeros:tools:netwatch [2023/03/25 01:03] (текущий) Николай Солошин |
| ====== Оповещение о восстановлении Интернет-соединения на MikroTik ====== | ====== Оповещение о восстановлении Интернет-соединения на MikroTik ====== |
| |
| Прошел тут у нас недавно [[goruimg>ледяной дождь во Владивостоке 2020|во Владивостоке ледяной дождь]]. Небывалых масштабов и разрушений! И, конечно же, пропал Интернет! Вовсе! Надолго! | Прошел тут у нас недавно во Владивостоке [[goruimg>ледяной дождь во Владивостоке 2020|ледяной дождь]]. Небывалых масштабов и разрушений! И, конечно же, пропал Интернет! Вовсе! Надолго! |
| |
| Первый день я иногда подключался к роутеру и смотрел, а не появился ли он, искомый. Во второй день уже что-то поднадоело! А на третий день появились эти скрипты. 8-) В итоге, через 5 дней мне на почту свалилось уведомление, что Интернет есть и можно расслабиться. | Первый день я иногда подключался к роутеру и смотрел, а не появился ли он, искомый. Во второй день уже что-то поднадоело! А на третий день появились эти скрипты. 8-) В итоге, через 5 дней мне на почту свалилось уведомление, что Интернет есть и можно расслабиться. |
| |
| В отличии от [[mikrotik:rb3011uias:routeros:system:scripts:failover|полноценного фэйловера]], в данном случае я решил использовать утилиту ''Netwatch'' из пакета ''Advanced Tools'' -- во-первых, для разнообразия, а, во-вторых, чтобы не нагружать периодическим выполнением скриптов и так не очень мощный маршрутизатор ''hAP''. | В отличии от [[mikrotik:rb3011uias:routeros:system:scripts:failover|полноценного фэйловера]], в данном случае я решил использовать утилиту "Netwatch" из пакета "Advanced Tools" -- во-первых, для разнообразия, а, во-вторых, чтобы не нагружать периодическим выполнением скриптов и так не очень мощный маршрутизатор "hAP". |
| | |
| | :!: //Другой вариант проверки доступности с использованием LibreNMS, [[raspberry_pi:pi_4_model_b:raspberry_pi_os:librenms:configuration:alerts:internet_ping_check|описан тут]].// |
| |
| ===== Логика работы ===== | ===== Логика работы ===== |
| |
| Утилита ''Netwatch'' периодически проверяет связь с указанным хостом и, если она пропадает, //один раз// выполняет инструкции из раздела ''Down'', а когда появляется -- //один раз// из раздела ''Up''. | Утилита "Netwatch" периодически проверяет связь с указанным хостом и, если она пропадает, //один раз// выполняет инструкции из раздела "Down", а когда появляется -- //один раз// из раздела "Up". |
| |
| Эти разделы ссылаются на соответствующие скрипты, которые: | Эти разделы ссылаются на соответствующие скрипты, которые: |
| ==== Важное замечание ==== | ==== Важное замечание ==== |
| |
| В принципе, в разделах ''Up'' и ''Donw'' можно расположить сами скрипты, но! У ''Netwatch'' есть две проблемы((Подробнее в [[https://wiki.mikrotik.com/wiki/Manual:Tools/Netwatch|официальной wiki]] или на разных профильных форумах.)): | В принципе, в разделах "Up" и "Donw" можно расположить сами скрипты, но! У "Netwatch" есть две проблемы((Подробнее в [[https://wiki.mikrotik.com/wiki/Manual:Tools/Netwatch|официальной wiki]] или на разных профильных форумах.)): |
| |
| - Он не может нормально оперировать глобальными переменными, из-за чего приходится использовать файл для хранения значений. Для этого нужна политика ''ftp''. | - Он не может нормально оперировать глобальными переменными, из-за чего приходится использовать файл для хранения значений. Для этого нужна политика "ftp". |
| - Он строго ограничен четырьмя политиками -- ''read,write,test,reboot'', а нам нужна еще и ''ftp''! | - Он строго ограничен четырьмя политиками -- "read,write,test,reboot", а нам нужна еще и "ftp"! |
| |
| Поэтому приходится размещать тексты скриптов отдельно и во всех обязательно включать ''Don't Require Permissions''! | Поэтому приходится размещать тексты скриптов отдельно и во всех обязательно включать "Don't Require Permissions"! |
| |
| ===== Комментарии к коду ===== | ===== Комментарии к коду ===== |
| |
| Вся эта затея сводится к настройке ''Netwatch'' и добавлению двух((Хотелось бы обойтись одним, но передача параметров, как, к примеру, [[mikrotik:rb3011uias:routeros:system:scripts:help|здесь]], тут, увы, невозможна!)) скриптов. | Вся эта затея сводится к настройке "Netwatch" и добавлению двух((Хотелось бы обойтись одним, но передача параметров, как, к примеру, [[mikrotik:rb3011uias:routeros:system:scripts:help|здесь]], тут, увы, невозможна!)) скриптов. |
| |
| ==== netwatch ==== | ==== netwatch ==== |
| |
| Тут все просто -- что пингуем((Я предпочитаю Google DNS, но, вероятно, лучше было бы указать что-то поближе к вашему провайдеру.)), с какой периодичностью и название наших скриптов. Таймаут по умолчанию 1000 мс, но я поставил 300 и это нормально работает. | Тут все просто -- что пингуем((Я предпочитаю Google DNS, но, вероятно, лучше было бы указать что-то поближе к вашему провайдеру.)), с какой периодичностью и названия наших скриптов. Таймаут по умолчанию 1000 мс, но я поставил 300 и это нормально работает. |
| |
| <code>/tool netwatch | <code>host=8.8.8.8 |
| add down-script=internet-down host=8.8.8.8 timeout=300ms up-script=internet-up interval=00:01:00</code> | interval=00:01:00 |
| | timeout=300ms |
| | down-script=internet-down |
| | up-script=internet-up</code> |
| |
| ==== internet-down ==== | ==== internet-down ==== |
| :set timeToLog [/system clock get time];</code> | :set timeToLog [/system clock get time];</code> |
| |
| Получаем в переменную ''internetStatus'' значение из файла, если его нет, создаем его и устанавливаем в значение ''none'', т.е. нет даты и времени предыдущего отключения Интернета -- это нужно, т.к. при запуске или перезагрузке устройства ''Netwatch'' сразу же проверяет соединение с хостом. По сути, это бонус, позволяющий отслеживать незапланированные перезагрузки роутера. | Получаем в переменную "internetStatus" значение из файла, если его нет, создаем его и устанавливаем в значение "none", т.е. нет даты и времени предыдущего отключения Интернета -- это нужно, т.к. при запуске или перезагрузке устройства "Netwatch" сразу же проверяет соединение с хостом. По сути, это бонус, позволяющий отслеживать незапланированные перезагрузки роутера. |
| |
| <code>/file { | <code>/file { |