No Image

Mikrotik usb power reset

СОДЕРЖАНИЕ
1 259 просмотров
10 марта 2020

IT-Blog

Скрипт контроля работы мобильного Интернет’а (3G/4G) на MikroTik (обновлённая версия моего старого скрипта). Если Интернет недоступен то перезагружается модем и отправляется отчёт на email.

Обновление от 24/09/2018, Версия 1.1.1:

  • Увеличен таймер ожидания загрузки модема после процедуры USB Power Reset (с 30 сек до 50) для последующего тестирования доступности Интернет’а. Некоторые модемы с прошивкой HiLink загружаются дольше чем 30 сек (Обсуждение этой проблемы: https://2keep.net/mikrotik-mobile-internet-check/#comment-466).

Обновление от 17/02/2018, Версия 1.1.0:

  • Добавлена поддержка модемов с HiLink прошивкой (подробнее читайте в комментариях в скрипте).
  • Добавлена проверка правильности указания интерфейса ‘ifName’ и типа модема ‘modemType’.

  • Проверяет загрузку процессора в течении указанного времени. Если загрузка 100% — отправляется отчёт на email и перезагружается Mikrotik.
  • Проверка наличия WLAN интерфейса. Если интерфейса нет — отправляется отчёт на email и перезагружается Mikrotik (Как-то давно, были у меня проблемы на старом Mikrotik — исчезали Wi-Fi интерфейсы. Помогала только перезагрузка. Проблемы такой давно нет, но данную функцию оставил).
  • Проверка наличия маршрута по умолчанию. Если его нет, то перезагружается по питанию USB модем (если функция поддерживается), перезапускается PPP соединение (Stick модем) и отправляется отчёт на email. Бывало у меня, что PPP соединение поднято, но маршрут по умолчанию исчезает. Не знаю, кто был виноват, модем или Mikrotik.
  • Проверка наличия трафика на интерфейсе USB модема. Если трафик есть, то дальнейшие проверки PINGами доступности Интернета не проводятся. Это сделано для того, что бы когда канал забивался на 100% (например из-за Torrent) и ICMP пакеты терялись, скрипт не считал, что интернет недоступен и не перезапускал соединение. Иначе он будет перезапускать соединение по кругу, пока на 100% занят канал в Интернет.
  • Если трафика на интерфейсе модема нет, то производится тестирование соединения используя ICMP протокол (ping). Если недоступны сразу ДВА хоста, то перезагружается по питанию USB модем (если функция поддерживается), перезапускается PPP соединение (Stick модем) и отправляется отчёт на email. Реализована проверка на ошибки написания адреса хоста или ошибки резлова IP по доменному имени. В моём старом скрипте, такой проверки не было и могла произойти ошибка резолва IP по домену когда недоступен DNS сервер и скрипт останавливал свою работу.
  • Отправка отчета на email о состоянии USB модема и сети сотового оператора (для Stick модема). В отчёт входит: средний уровень сигнала мобильной сети (RSSI измеряется в течении 10 секунд и вычисляется среднее значение), название оператора, технология подключения к сети, модель модема, LAC, CID и др. Также на email отправляется прикрепленный файл с лог файлом Mikrotik.
Читайте также:  Patriot viper 4 pv48g340c6k

Данный скрипт, это обновлённая версия моего скрипта для проверки работы мобильного Интернета, написанного в 2014 году. В данной статье я не буду подробно рассказывать как установить скрипт, настроить отправку почты, создать правило в планировщике. Если у вас возникают с этим проблемы, почитайте мою предыдущую статью на эту тему, там всё разжёвано: Скрипт контроля качества 3G Интернет’а на MikroTik

В сущности, это не один, а два скрипта:

  1. healthCheck — скрипт проверки работы мобильного Интернета. Данный скрипт, с помощью планировщика запускается каждые 5 минут и выполняет тестирование мобильного Интернета.
  2. modemStatus — скрипт вызывается из скрипта «healthCheck» и выполняет опрос модема со Stick прошивкой, получая с него следующие данные: состояние модем, технология подключения к сети (3G, 4G), оператор, средний уровень сигнала RSSI и др. Для модема типа HiLink данный скрипт не нужен, т.к. с HiLink модема невозможно получить информацию.

Если используется модем со Stick прошивкой, то в MikroTik необходимо установить два скрипта.

В комментариях в скриптах, я постарался по максимуму описать алгоритм их работы. В случае необходимости, это вам поможет подправить скрипты под свои задачи.

С помощью планировщика скрипт «healthCheck» запускается каждые 5 минут и выполняет тестирование Интернета.

  • создаем скрипт, отключающий питание USB-порта и восстанавливающий его через заданный промежуток времени
  • system script add name="usb_power_reset" policy=write source="/system routerboard usb power-reset duration=15s"
  • настраиваем утилиту Netwatch на периодическую проверку доступности нужного ресурса и запуск созданного выше сценария в случае отсутствия подключения к нему
  • tool netwatch add host=8.8.8.8 interval=00:01:00 timeout=5 down-script=usb_power_reset

darkneo

Бывалый

cemehbl4

den_sad

Свой человек

den_sad

Свой человек

cemehbl4

den_sad

Свой человек

Да, на 3 секунды

Можно фермы перезагружать удаленно

Читайте также:  Симистор вместо реле на 220в

darkneo

Бывалый

den_sad

Свой человек

darkneo

Бывалый

cemehbl4

darkneo

Бывалый

Ок. А в "Down" можно ввести 2 команды? Опробовал я твою команду, работает (с некоторыми изменениями), но мне больше нравится другое решение. Оно быстрее и, на мой взгляд, меньше вероятность спалить модем.

Вот:
/interface ppp-client disable LTE-Modem

/interface ppp-client enable LTE-Modem

cemehbl4

Ок. А в "Down" можно ввести 2 команды? Опробовал я твою команду, работает (с некоторыми изменениями), но мне больше нравится другое решение. Оно быстрее и, на мой взгляд, меньше вероятность спалить модем.

Вот:
/interface ppp-client disable LTE-Modem

/interface ppp-client enable LTE-Modem

darkneo

Бывалый

Срабатывает. При вводе этих команд IP адрес меняется, как и после ребута модема. Так можно туда две команды ввести?

И ещё какой-то таймаут надо сделать между этими командами, хотя бы 1-2 сек. Как это реализовать?

den_sad

Свой человек
Свой человек

пишете скрипт, это не сложно. описываете свой сценарий поведения модема.

я себе такие написал, уже несколько лет не подхожу ни к модему ни к роутеру.

/interface monitor-traffic [/interface find name=lte1] once do= <
:local RX (rx-bits-per-second / 1024);
:local TX (tx-bits-per-second / 1024);
ut $RX;
ut $TX;

#:log info message="*****************************************"
#:log info message="START Script Router Reboot-"

# :log info message=$RX;
# :log info message=$TX;
# :log info message="kb per sec";

:if ($RX+$TX 0) do= <
#:log info message="PingTest OK";
#:log info message=$PINGRESULT;
#:log info message="Script END";
#:log info message="*****************************************"

> else= <
#:log info message="PINGTEST FAIL";
:log info message="REBOOT ROUTER";
/system reboot;
#:log info message="Script END";
#:log info message="*****************************************"
>
> else= <
#:log info message="High traffic on lte1. Ping OFF";
#:log info message="Script END";
#:log info message="*****************************************"

Читайте также:  Praat инструкция на русском

#———- 2. USB Reboot (LTE/PPTP Ping) ———-
# LOG OFF

/interface monitor-traffic [/interface find name=lte1] once do= <
:local RX (rx-bits-per-second / 1024);
:local TX (tx-bits-per-second / 1024);
ut $RX;
ut $TX;

# :log info message="*****************************************"
# :log info message="START SCRIPT –USB Reboot–"
# :log info message=$RX;
# :log info message=$TX;
# :log info message="kb per sec";

:if ($RX+$TX 0) do= <
#:log info message="PingTest OK";
#:log info message=$PINGRESULT;
#:log info message="Script END";
#:log info message="*****************************************"

> else= <
#:log info message="PINGTEST FAIL";
#:log info message="Stop PPTP";
:interface pptp-client disable PPTP;
:log info message="REBOOT USB";
/system routerboard usb power-reset duration=3s;
:delay 30s;
#:log info message="Start PPTP";
:interface pptp-client enable PPTP;
#log info message="Script END";
#:log info message="*****************************************"
>
> else= <
#:log info message="High traffic on lte1. Ping OFF";
#:log info message="Script END";
#:log info message="*****************************************"

Комментировать
1 259 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
Adblock
detector