Скрипт проверки работоспособности lte-каналов в Интернет

Здесь выкладываем скрипты
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Ответить
Sertik
Сообщения: 1649
Зарегистрирован: 15 сен 2017, 09:03

Сделан для того, чтобы если пропал Интернет через LTE - отключить канал, чтобы не висел и не перебивал маршруты резервных каналов при не настроенных маркировках и балансировках. При появлении Инета (при повторной проверке) восстанавливает работоспособность канала.

Маршруты в Интернет для LTE-интерфейсов роутера должны быть настроены. Скрипт это не проверяет.
Тестируйте, может где ошибся.
Вроде работает.

Ищет все LTE-интерфейсы роутера. При нахождении смотрит включен ли интерфейс, если не включен включает временно для проверки. Делаем паузу 20 сек.
Потом - тестирует пингом 8.8.8.8. Если пинг есть - всё океy. Если пинга нет - ждет статус lte-интерфейса, пока хоть какой-нибудь статус не появится.
При появлении статуса, даже если он не нормальный, всё равно опять пингуем 8.8.8.8. Если пинг есть - ОК. Если пинга опять нет - считаем что доступа в Интернет через этот lte-интерфейс нет (кончились деньги, проблемы у оператора и т.д...) и выключаем его до следующей проверки.
Повторяем всю байду с каждым, найденным lte-интерфейсом.
После работы скрипта - "живые" lte-интерфейсы включаются, если были выключены и остаются жить.
Не рабочие - отключаются.

Можно поставить в крон с нужным повторением в надежде ,что связь появится (кто-нибудь даст денег :-)

В скрипте, возможно есть лишние проверки ..., главное чтобы работал.

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

#------------------------------------------------------------------------------------------------------
# Скрипт проверки/восстановления работоспособности LTE
#                     by Sertik 02/12/2021
#------------------------------------------------------------------------------------------------------

:local lteIs [:toarray ""]
:local ltenum 0

# Находим перебором все lte-интерфейсы и помещаем их имена в массив $lteIs
:foreach counter in=[/interface lte find] do={
:set ($lteIs->$ltenum) [/interface lte get $counter name];
:set $ltenum ($ltenum+1)
}

:if ([:len $lteIs]!=0) do={
   :log info ""
    :log warning ("Роутер "."$[/system identity get name] "."lte-модемов: "."$[:len $lteIs]")
    :local ltecmd
    :local Ltestatus
    :local typepar "registration-status";
#:local ltenum [:len $lteIs]
    :local ltename
         :while ($ltenum!=0) do={
#:set $ltename ("lte"."$[:tostr $ltenum]")
              :set $ltename [pick $lteIs ($ltenum-1)];: log warning ("Проверка интерфейса "."$ltename "."....")
                   :if ([/interface lte get $ltename disabled]) do={:log warning "Lte-интерфейс $ltename был отключен. Включаем его для проверки ..."; [/interface lte enable $ltename];
                      :log warning "Lte-интерфейс $ltename включен. Ожидаем инициализацию модема ..."; :delay 20s;}
                           :if ([/ping 8.8.8.8 interface=$ltename count=5]>2) do={:log info "Модем активен и подключен. Есть выход в Интернет через $ltename"; :set $ltenum ($ltenum-1);}
                           :if ([/ping 8.8.8.8 interface=$ltename count=5]=0) do={
                                :if (![/interface lte get $ltename disabled]) do={
                                  # get Lte modem status
                                  :set ltecmd [/interface lte info $ltename once as-value]
                                  :set Ltestatus ($ltecmd->$typepar);
                                  :do {:delay 1s; :set Ltestatus ([/interface lte info $ltename once as-value]->"$typepar")} while=([:len ([/interface lte info $ltename once as-value]->"$typepar")]=0)
                                       :if (($Ltestatus="registered") && ([/ping 8.8.8.8 interface=$ltename count=5]>2)) do={:log warning "Появление доступа в интернет через $ltename"} else={ 
                                            :if (($Ltestatus="registered") or ($Ltestatus="unknown") or ($Ltestatus="not searching") or ($Ltestatus="denied")) do={
                                            :log error "Lte интерфейс $ltename активен, но не пингует 8.8.8.8 - отключаем его ...."
                                                :if ([/ping 8.8.8.8 interface=$ltename count=5]>2) do={:log warning "Появление доступа в Интернет на интерфейсе $ltename. Оставлен включенным"} else={
                                                [/interface lte disable $ltename];}
                 :log info "Скрипт отключил интефейс $ltename"} else={:log warning "Lte интерфейс $ltename активен, его статус не определён, возможно идёт настройка соединения ... ";}
                                     }
                                 } else={log info "Lte интерфейс $ltename в системе отключен"}
:set $ltenum ($ltenum-1);}
               }
 } else={:log warning "LTE-интерфейсы не найдены"}

:log warning "Проверка LTE-интерфейсов окончена"


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Аватара пользователя
Dominik
Сообщения: 15
Зарегистрирован: 28 янв 2017, 23:50
Контактная информация:

ROS 7.14.2 on SXT R
---------------------------------
Перестал работать скрипт

Изображение

Далее ничего не происходит


Sertik
Сообщения: 1649
Зарегистрирован: 15 сен 2017, 09:03

И что ? Вы мне предлагаете Вам скрипт поправить ?
Читайте руководства, учитесь и вперед с песнями ...


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Аватара пользователя
podarok66
Модератор
Сообщения: 4370
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

Dominik писал(а): 16 апр 2024, 11:40 ROS 7.14.2 on SXT R
---------------------------------
Перестал работать скрипт

Изображение

Далее ничего не происходит
Дата публикации скрипта декабрь 2020 года, дата выхода 7.1 - декабрь 2021 года. То есть автор практически со стопроцентной вероятностью писал под шестую версию. Думаю, что править под семерку он его не будет пока (если судить по ответу). Так что, если есть необходимость, то самостоятельно переписывайте. Не думаю, что там много подводных камней.


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
Ответить