Ca6ko писал(а): ↑15 ноя 2019, 11:07
Вкладка QuickSet одноразовая ... и очень часто можно ловить всякие проблемы из-за этого.
Мда. спасибо.
Ca6ko писал(а): ↑15 ноя 2019, 11:07
Для автоматизации можно написать специальный скрипт. Но думаю самостоятельно Вы не справитесь.
Самое простое поставить автоперезагрузку ночью например на 3 часа или другое время когда Вам удобно.
Ну это не наш метод, да и зависнуть может днем - не ждать же до ночи.
Скрипт сделал вот такой:
:local ifName "wlan1";
:local cntPing 5;
:local cntPingOk 1;
:local hostPing1 "192.168.1.20";
:local hostPing2 "8.8.8.8";
:local wanTrafRx 0;
:local wanTrafRxRes 0;
:local cntRes1;
:local errorMsgHost1;
:local cntRes2;
:local errorMsgHost2;
:local inetStatus;
:local inetFailedReason;
if ([/ip route find where dst-address=192.168.1.0/24 distance=0] != "") do={
for x from=1 to=5 do={
/interface monitor-traffic [/interface find name=$ifName] once do={
:set wanTrafRx (rx-bits-per-second / 1024);
}
if ($wanTrafRx > $wanTrafRxRes) do={
:set wanTrafRxRes $wanTrafRx;
}
:delay 1;
}
if ( $wanTrafRxRes < 30) do={
:do {
:set cntRes1 [/ping count=$cntPing $hostPing1];
} on-error={
:set cntRes1 0;
:set errorMsgHost1 "Error ping host1: $hostPing1!";
:log warning $errorMsgHost1;
}
:do {
:set cntRes2 [/ping count=$cntPing $hostPing2];
} on-error={
:set cntRes2 0;
:set errorMsgHost2 "Error ping host2: $hostPing2!";
:log warning $errorMsgHost2;
}
if ($cntRes1 < $cntPingOk and $cntRes2 < $cntPingOk) do={
:set inetStatus "failed";
:set inetFailedReason ("\
Internet connection failure!\n\
\n\
Host1 - $hostPing1 lost ".[:tonum $cntPing] - [:tonum $cntRes1]." packets of $cntPing ($errorMsgHost1)\n\
Host2 - $hostPing2 lost ".[:tonum $cntPing] - [:tonum $cntRes2]." packets of $cntPing ($errorMsgHost2)\n\
\n\
WAN speed RX: $wanTrafRxRes kbit/s \n\
");
:log warning $inetFailedReason;
}
}
if ($inetStatus = "failed") do={
/interface disable $ifName;
:delay 3;
/interface enable $ifName;
/log print file=log.txt;
}
}
192.168.1.18/24 мой интерфейс wlan 1
192.168.1.20 адрес базы
Чтобы проверить, временно убрал первую проверку (сделал ее на тот случай, если базу сдуло и чтобы каждую минуту не передергивался мой интерфейс), положил интерфейс в down, скрипт отрабатывает секунд за 30 и интерфейс поднимается.
Завел в scheduler с интервалом запуска минута.
1. Нет ли в такой схеме потенциальных косяков? Scheduler работает без багов и такая схема будет железобетонно работать?
Не может случится такое, что наплодится миллион этих запущенных скриптов?
2. Какие permissions надо оставить скрипту (вначале снял все галочки и вручную он запускался, но при запуске из scheduler'a запускаться перестал и начал ругаться в log на недостаток прав. Пришлось все галки вернуть).
3. Как ни крути, а скрипт это костыль. Что все-таки может быть причиной таких подвисаний (отсутствия пакетов от базы)?