Итак создаю скрипт Ping_con :
Код: Выделить всё
#Задаём переменную, определяющую количество запросов на каждый адрес
:local PingCount 3
#Задаём локальные переменные - IP адреса для пинга. У меня второй адрес - внутренний адрес сервера провайдера.
:local Google 8.8.8.8
:local Iphome 10.201.10.1
:local mail 94.100.180.201
#Локальные переменные, содержащие количество удачных ответов на пинги. Интерфейс ether2 - у меня смотрит в интернет.
:local ResultGoogle [/ping count=$PingCount $Google interface=ether2]
:local ResultIphome [/ping count=$PingCount $Iphome interface=ether2]
:local ResultMail [/ping count=$PingCount $mail interface=ether2]
#Самое вкусное. Переменная MainIfInetOk - есть ложное утверждение. Далее изменяем его, подставляя сравнение.
#Сумма полученных удачных ответов должна быть не меньше 2/3 от общего числа запросов.
:local MainIfInetOk false;
:set MainIfInetOk (($ResultGoogle + $ResultIphome + $ResultMail) >= (2 * $PingCount))
:put "MainIfInetOk=$MainIfInetOk"
#Теперь делаем выводы на основании полученных вычислений.
if (!$MainIfInetOk) do={
/log error "Bad connect"
/system reboot
}
if ($MainIfInetOk) do={
/log info "Connect OK"
}
В шедулере создаю две новых записи.
Первая Ping:
Код: Выделить всё
/system script run Ping_con
Исполнение каждые 5 минут, начало исполнения startup, состояние в начале тестирования disable
Вторая Time:
Код: Выделить всё
:delay 100;
/system scheduler disable Ping
:delay 3500;
/system scheduler enable Ping
Исполнение по нулям, пусть запускается единожды, начало исполнения startup, состояние в начале тестирования enable.
После перезагрузки запускается Time, который ждет один час, потом запускает шедулер Ping, запускающий скрипт Ping_con. Теперь проверка будет выполнятся каждые 5 минут. Если интернет пропадет, скрипт даст команду на перезагрузку. После перезагрузки начнет отрабатывать шедулер Time и цикл повторится. На время тестирования в скрипте Ping_con строку
Код: Выделить всё
/system reboot
Код: Выделить всё
/log info "Connect OK"
Код: Выделить всё
/system reboot
Такой подход позволяет перезагрузить устройство при обрыве связи с внешним миром в течение 5 минут, но не дергать его перезагрузкой каждые 5 минут, если провайдер временно отключил соединение с сетью.