SXT LTE ребут интерфейса lte

Обсуждение ПО и его настройки
Ответить
timofey.syursin
Сообщения: 6
Зарегистрирован: 19 фев 2020, 16:38

Добрый вечер? И так есть sxt lte, на нем пробую реализовать перезагрузку по отсутствию пинга до хоста (8.8.8.8), знакомлюсь с логикой работы скриптов.
Почитал разное Пытаюсь применить код покороче, разобраться в логике работы:

Код: Выделить всё

:local PingCount 5;
:local One 8.8.8.8;
:local ResultOne [/ping count=$PingCount $One interface=lte1];
:local Uptime [/system resource get uptime];
:if ($ResultOne=0 && $Uptime>00:02:00) do={/interfaces lte1 disable duration=60s };
Есть тестовый стенд, интернетов там нет, пробую прогнать скрипт. Счетчик тикает, интерфейс не откл. Подскажите правильный синтаксис, как должно выглядеть вкл\откл интерфейса с задержкой включения к примеру 1 мин


timofey.syursin
Сообщения: 6
Зарегистрирован: 19 фев 2020, 16:38

Код: Выделить всё

:if ($ResultOne=0 && $Uptime>00:02:00) do={/interface lte1 disable 0 };
Поправил синтаксис, не хватало префикса 0. Осталось написать по пингу до хоста на включение интерфейса обратно.
Если лте1 откл - и аптайм больше 2 мин - пинг до хоста > 0 вкл лте1


timofey.syursin
Сообщения: 6
Зарегистрирован: 19 фев 2020, 16:38

Код: Выделить всё

:local PingCount "кол-во запросов";
#хост
:local One 8.8.8.8; 
:local ResultOne [/ping count=$PingCount $One interface=lte1];
:if ($ResultOne=0 ) 
do={/interface lte disable 0; delay "секунды"s; /interface lte enable 0 };


Erik_U
Сообщения: 1754
Зарегистрирован: 09 июл 2014, 12:33

пример скрипта

Код: Выделить всё

:local addresses "8.8.8.8,8.8.4.4,77.88.8.8,77.88.8.1,77.88.8.88,77.88.8.2";
:local TimePowerReset 5;
:local NeedTest true;
:if ($CountLteAllInterface = 0) do={
    :set NeedTest false;
} else={
    :set NeedTest true;
}
:if ($NeedTest) do={
    :local InternetIsset false
    :local addr [:toarray $addresses]
    :foreach ipp in $addr do={
        :if ($InternetIsset=false) do={
            :if ([/ping address=$ipp routing-table="$CommentRule" count=3] = 0) do={
                /log warning message="Test LTE Internet fail address $ipp"
            } else={
                /log warning message="Test LTE Internet success $ipp"
                :set InternetIsset true;
            }
        }
    }

    :if ($InternetIsset=false) do={
        /system routerboard usb power-reset duration=$TimePowerReset
    }
}


timofey.syursin
Сообщения: 6
Зарегистрирован: 19 фев 2020, 16:38

Остановился на таком что - пингуем хост, и если время как у автора скрипта, больше пары минут, оно в принципе не к чему, отключаем только лте а не роутер, тем не менее если доступ только удаленный, чтоб не дергать лте чаще чем нужно, и результат пинга = 0 успешных ответов, то отключить лте с задержкой 2мин, после этого включить лте.
Можно переделать скрипт используя dealy и убрать в планировщике интервал, и т.д. и т.п.
Т.е. это должно имитировать то, когда достаем симку, рвем сессию с оператором, и регаемся по новой.
Так же хорошо бы добавить сообщения в лог, при совершении действия с интерфейсом или об успешном получении ответа от хоста, и отправкой куда-нибудь в телегу, думаю это все выполнимо...

Код: Выделить всё

:local PingCount 10;
:local One 8.8.8.8;
:local ResultOne [/ping count=$PingCount $One interface=lte1];
:local Uptime [/system resource get uptime];
:if ($ResultOne=0 && $Uptime>00:02:00 ) 
do={/interface lte disable 0; delay 120s; /interface lte enable 0 };


timofey.syursin
Сообщения: 6
Зарегистрирован: 19 фев 2020, 16:38

Так же возможно оператор рвет соединение от бездействия оборудования, т.е. бывало так, что связь пропадает рандомно, от 30мин до 2 часов
Добавил для этого 1 запрос пинга до 8.8.8.8 c интервалом в 2 мин, в сутки трафика меньше МБ, соединение пока держит нормально


Ответить