MikroTik. Скрипт контроля мобильного Интернет’а

Автор: Андрей Торженов

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

MikroTik. Скрипт контроля мобильного Интернет’а

Обновление от 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’.

Скрипт рассчитан на работу как с модемом со Stick прошивкой (PPP соединением) так и на работу в ограниченном режиме с HiLink модемом. Модем может быть с USB интерфейсом или Mini-PCI. Стандарт мобильной связи модема неважен (2G, 3G или 4G, а в будущем хоть 5G).

Функции скрипта

  • Проверяет загрузку процессора в течении указанного времени. Если загрузка 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.

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

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

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

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

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

Что бы вставить скрипт в Mikrotik с русскими комментариями, предварительно переведите раскладку клавиатуры на русский язык и только после этого копируйте скрипт и вставляйте в Winbox.

Скрипт healthCheck

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

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

# Version 1.1.0 (17/02/2018)
# + Добавлена поддержка модемов с HiLink прошивкой (ограниченная функциональность скрипта).
#   В случае если не работает Интернет, то скрипт перезагружает по питанию модем.
#   MikoTik должен поддерживать функцию "USB Power Reset" (https://wiki.mikrotik.com/wiki/Manual:USB_Features).
#   Значение параметра 'usbReset' игнорируется, если тип модем 'hilink', подразумевается что 'usbReset' всегда 'Yes'.
#   С HiLink модема невозможно получить информацию о работе модема и мобильной сети,
#   поэтому скрипт "modemStatus" не нужен.
# + Добавлена проверка правильности указания интерфейса 'ifName' и типа модема 'modemType'.

##########################
### НАЧАЛО - Настройки ###

# Тип прошивки модема. Возможные варианты: stick, hilink
:local modemType "stick";

# Имя интерфейса модема
:global ifName "ppp-out1";

# email на которые отправлять отчёты
:local mailAddrTo "user@domain.ru";

# В течении какого времени (сек) анализируем загрузку CPU
:local cpuLoadSec 5;

# Количество посылаемый icmp пакетов
:local cntPing 10;

# Ожидаемое количество вернувшихся пакетов
# В вашем случае, ожидается, что 10 пакетов отправлено и хотя бы 1 должен вернуться
:local cntPingOk 1;

# Первый тестируемый адрес в Интернете
:local hostPing1 "ya.ru";

# Второй тестируемый адрес в Интернете
:local hostPing2 "8.8.8.8";

# Отключать питание на USB для перезагрузки модема? (yes/no)
# Параметра 'usbReset' игнорируется, если тип модем 'hilink', подразумевается что 'usbReset' всегда 'Yes'.
# Внимание! Если включить данную опцию, но ваш Mikrotik не поддерживает её, 
# то выполнение скрипта прервётся и работать скрипт не будет!
# Список MikroTik поддерживающих USB Power Reset: https://wiki.mikrotik.com/wiki/Manual:USB_Features
# Если вы не найдете свой MikroTik в списке, то вы можете выполнить в консоли команду: /system routerboard usb power-reset
# если появится ошибка - "ERROR: USB power reset not implemented on this hardware", значит поддержки нет.
:local usbReset "no";

### КОНЕЦ - Настройки ###
#########################

:local inetStatus;
:local inetFailedReason;
:local modemTypeFound "0";

# Проверяем наличие интерфейса 'ifName' и правильности указания типа прошивки модема 'modemType'

:if ($modemType = "hilink") do={
    :set modemTypeFound "1";
    :if ([/interface lte find name=$ifName] = "") do={
        :log warning "Interface '$ifName' for '$modemType' modem not found!";
        :log warning "Check parameter - ifName";
        :log warning "Script is stopped!";
        :error "Script is stopped! For more information, see log...";
    }
} else={ if ($modemTypeFound != "1") do={ :set modemTypeFound "0"; } }

:if ($modemType = "stick") do={
    :set modemTypeFound "1";
    :if ([/interface ppp-client find name=$ifName] = "") do={
        :log warning "Interface '$ifName' for '$modemType' modem not found!";
        :log warning "Check parameter - ifName";
        :log warning "Script is stopped!";
        :error "Script is stopped! For more information, see log...";
    }
} else={ if ($modemTypeFound != "1") do={ :set modemTypeFound "0"; } }

:if ($modemTypeFound = "0") do={
    :log warning "$modemType - incorrect type of modem!";
    :log warning "Check parameter - modemType";
    :log warning "Script is stopped!";
    :error "Script is stopped! For more information, see log...";
}

# проверяем наличие интерфейсов с именем начинающимся на wlan

:if ([/interface find name~"wlan"] = "") do={
    /tool e-mail send to=$mailAddrTo body="Wi-Fi interface not found. Mikrotik rebooted!" subject="$[/system identity get name]. Wi-Fi interface not found. $[/system clock get time] $[/system clock get date]"
    :delay 20;
    /system reboot;
}

:delay 1;

# Проверяем загрузку CPU

:local cpu100 0;
for x1 from=1 to=$cpuLoadSec do={
    :if ([/system resource get cpu-load] = "100") do={
        :set cpu100 ($cpu100+1);
    }
   :delay 1;
}
:if ($cpu100 = $cpuLoadSec) do={
    /tool e-mail send to=$mailAddrTo body="Within $cpuLoadSec seconds, CPU load on Mikrotik: 100%. Mikrotik rebooted!" subject="$[/system identity get name]. CPU load on Mikrotik: 100%. $[/system clock get time] $[/system clock get date]"
    :delay 20;
    /system reboot;
}

# Проверка наличие Интернета

# Проверяем, есть ли маршрут по умолчанию
if ([/ip route find where dst-address=0.0.0.0/0] != "") do={

    # Если маршрут есть, то в течении 5 секунд следим за ИСХОДЯЩИМ и ВХОДЯЩИМ трафиком на сетевом интерфейсе
    :local wanTrafTx 0;
    :local wanTrafTxRes 0;
    :local wanTrafRx 0;
    :local wanTrafRxRes 0;
    for x from=1 to=5 do={
        /interface monitor-traffic [/interface find name=$ifName] once do={
            :set wanTrafTx (tx-bits-per-second / 1024);
        }
        /interface monitor-traffic [/interface find name=$ifName] once do={
            :set wanTrafRx (rx-bits-per-second / 1024);
        }
        if ($wanTrafTx > $wanTrafTxRes) do={
            :set wanTrafTxRes $wanTrafTx;
        }
        if ($wanTrafRx > $wanTrafRxRes) do={
            :set wanTrafRxRes $wanTrafRx;
        }
        :delay 1;
    }
     
    # Если трафик на интерфейсе меньше 100 кбит/с запускаем проверку PINGами
    if ($wanTrafTxRes < 100 and $wanTrafRxRes < 30) do={
        # Производим тестирование доступности хостов (с проверкой на ошибки) и результаты помещаем в переменные
        :local cntRes1;
        :local errorMsgHost1;
        :do {
            :set cntRes1 [/ping count=$cntPing $hostPing1];
        } on-error={
            :set cntRes1 0;
            :set errorMsgHost1 "Error ping host1: $hostPing1, maybe DNS resolve error!";
            :log warning $errorMsgHost1;
        }
        :local cntRes2;
        :local errorMsgHost2;
        :do {
            :set cntRes2 [/ping count=$cntPing $hostPing2];
        } on-error={
            :set cntRes2 0;
            :set errorMsgHost2 "Error ping host2: $hostPing2, maybe DNS resolve error!";
            :log warning $errorMsgHost2;
        }
        # Если из 10ти посланных пакетов вернулось меньше указанного в переменной $cntPingOk, то делаем запись в лог файл,
        # присваиваем переменной inetStatus признак наличия проблем с Интернетом (failed) и далее перезапускам соединение
        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\
                WAN speed TX: $wanTrafTxRes kbit/s \n\
            ");
            :log warning $inetFailedReason;
        }
    }
} else={
    # Если маршрута по умолчанию нет, то делаем запись в лог файл,
    # присваиваем переменной inetStatus признак наличия проблем с Интернетом (failed) и далее перезапускам соединение 
    :set inetStatus "failed";
    :set inetFailedReason "Internet connection failure!\nNo default gateway!\n"
	:log warning $inetFailedReason;
}

# Если после проверки доступности Интернета есть проблемы, то...
if ($inetStatus = "failed") do={
    :global modemStatus;
    # Если модем со Stick прошивкой, то перезагружаем PPP интерфейс, 
    # питание на USB (если включено) и получаем данные с модема и мобильной сети.
    if ($modemType = "stick") do={
        /interface ppp-client disable $ifName;
        :delay 1;
        
        # Отключаем на 5 секунд питание на USB для перезагрузки модема
        if ($usbReset = "yes") do={
            :log warning "USB Modem power reset!";
            /system routerboard usb power-reset duration=5;
            # Ждём 50 сек пока загрузится модем
            :log warning "Wait 50 sec to modem boot";
            :delay 50;
        }
        
        # Запускаем скрипт "modemStatus" и получаем состояние модема и уровня сигнала сети
        execute "/system script run modemStatus";
        :delay 15;
        
        /interface ppp-client enable $ifName;
    }
    # Если модем с HiLink прошивкой, то только перезагружаем питание на USB
    if ($modemType = "hilink") do={
        :set modemStatus "Modem status: HiLink modem. No additional info!";
        :log warning "USB Modem power reset!";
        /system routerboard usb power-reset duration=5;
        :log warning "Wait 30 sec to modem boot";
        :delay 30;
    }
    :delay 20;
    # Сохраняем лог в файл
    /log print file=log.txt
    # Отправляем email с отчётом и логом
    /tool e-mail send to=$mailAddrTo file=log.txt body="$inetFailedReason\n$modemStatus" subject="$[/system identity get name]. Internet connection failure! $[/system clock get time] $[/system clock get date]"
}

Скрипт modemStatus

Используется только для модемов со Stick прошивкой.

Скрипт «modemStatus» вызывается из скрипта «healthCheck» и выполняет опрос модема для получение информации о его состоянии и параметрах сети сотового оператора.

# Version 1.0.1 (29/08/2018)

:global modemStatus;
:global ifName;
:local i 0;
:local avgRSSI 0;
:local i1 0;
/interface ppp-client info $ifName do={
    :set i ($i + 1);
    # START - Расчитываем среднее значения RSSI (dBm)
    # При опросе модема, он не сразу выдаёт необходимые данные, а с задержкой, по этому, 
    # ждём когда появится значение signal-strengh и начинаем расчёт среднего значения RSSI
    :if ($"signal-strengh" != "") do={
        :log info "Current RSSI: $"signal-strengh"";
        :set i1 ($i1 + 1);
        # signal-strengh выдаётся в виде: "-101 dBm", для расчёта необходимо получить только число!
        # Для этого удаляем знак "-" и " dBm", что бы получить только число "101".
        # Записываем полученное число в переменную avgRSSI
        :set avgRSSI ($avgRSSI + [:tonum [:pick $"signal-strengh" 1 [:find $"signal-strengh" " dBm"]]]);
    }
    :if ($i = 10) do={
        # Финальная операция по расчёту среднего значения RSSI
        :set avgRSSI "-$[($avgRSSI / i1)] dBm";
        # END - Расчитываем среднее значения RSSI (dBm)
        
        # Формируем значение переменной modemStatus, значение которой отправится на почту как часть отчета
        :set modemStatus "\
            Modem Status: $"modem-status"\n\
            Pin-status: $"pin-status"\n\
            Functionality: $"functionality"\n\
            Manufacturer: $"manufacturer"\n\
            Model: $"model"\n\
            Revision: $"revision"\n\
            Serial Number: $"serial-number"\n\
            Current Operator: $"current-operator"\n\
            IMSI: $"imsi"\n\
            Access Technology: $"access-technology"\n\
            Average Signal Strength: $avgRSSI\
        ";

        :log warning "Start report USB Modem:";
        :log warning $modemStatus;
        :log warning "End report USB Modem";
        :log warning "Remove modemStatus script job"; 
        /system script job remove [find script=modemStatus ];
    }
}

Вкратце по другим настройкам

Настройка email

/tool e-mail
set address=smtp.ya.ru from=yourLogin@ya.ru password=yourPass port=465 start-tls=tls-only user=yourLogin@ya.ru

Добавление в планировщик запуск скрипта

/system scheduler
add interval=5m name=healthCheck on-event="/system script run healthCheck"

Скрипты «healthCheck» и «modemStatus» добавляйте в MikroTik через WinBox, там проще.

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

Примеры отчётов приходящих на email

Нет маршрута по умолчанию

Internet connection failure!
No default gateway!

Modem Status: ready
Pin-status: no password required
Functionality: full
Manufacturer: huawei
Model: E3372
Revision: 21.180.01.00.00
Serial Number: 869907027329719
Current Operator: MTS RUS (cellid: 2b3a6, lac: 12a6 )
IMSI: 250116378414154
Access Technology: 3G
Average Signal Strength: -99 dBm

Недоступны хосты

Internet connection failure!

Host1 - ya.rud lost 10 packets of 10 (Error ping host1: ya.rud, maybe DNS resolve error!)
Host2 - 8.8.8.7 lost 10 packets of 10 ()

WAN speed RX: 0 kbit/s
WAN speed TX: 0 kbit/s

Modem Status: ready
Pin-status: no password required
Functionality: full
Manufacturer: huawei
Model: E3372
Revision: 21.180.01.00.00
Serial Number: 869907027329719
Current Operator: MTS RUS (cellid: 2b3a6, lac: 12a6 )
IMSI: 250116378414154
Access Technology: 3G
Average Signal Strength: -100 dBm

P.S.

Скрипт опубликованный в данной статье, это упрощённая версия скрипта, используемого мной для своих задач. В скрипте, что использую я, более сложная логика реакции на возникающие проблемы с Интернет’ом, но в связи с этим, он сложнее и больше.

Т.к.  я не использую данный скрипт в своей работе, в нём могут всплывать ошибки, которые я не отловил в процесс отладки. Пишите о них в комментарии, я исправлю.

The following two tabs change content below.
В профессиональной сфере занимаюсь всем, что связанно с IT. Основная специализация - VoIP и сети передачи данных. Стараюсь не заниматься Windows серверами (но иногда приходится) и 1С.

MikroTik. Скрипт контроля мобильного Интернет’а: 39 комментариев

    1. Андрей Торженов Автор записи

      hilink модемом Mikrotik управлять не может. Не может он с него получить и уровни сигнала, и разорвать соединение и т.д. Единственное что можно, это перезагрузить питание usb, если Mikrotik это поддерживает.

      Данный скрипт не поддерживает hilink модем, но его можно для него переделать, значительно упростив скрипт.

  1. Windows LiveUser

    Добрый день! Использую модем HILINK. Установил скрипт, а он в логе вон что пишет. Отсутствует Stick и останавливает выполнение скрипта. Подскажите, что надо поправить.
    2 вопрос: настроил почту ya.ru, добавил свои данные. А на какой адрес будет приходить оповещения? На этот же? Получается будет отправлять сам себе?

    Прикрепленный файл:

  2. Windows LiveUser

    Со скриптом разобрался. Не поправил кое что. Но правда, на мой адрес логи не отправляет, хотя тестовое письмо я пробовал, отправляется. Проверял так: на самом хайлинк отключил сеть- ждал 10 минут, ничего после подключения к интернету не пришло.

    1. Андрей Торженов Автор записи
      1. Скрипт запускается планировщиком?
      2. Что в логах?

      Упрощенная логика скрипта такая:

      Пингует заданные узлы, если они недоступны, то перезагружает модем, опять тестирует доступность узлов, если они стали доступны, то отправляется email с отчётом.

      В вашем случае, вы отключили интернет сами, скрипт его пытается тестировать, выключает/включает модем, но инет не появляется… он и не отправляет отчёт, интернета то нет… как он его отправит?

      Для себя я использую более сложный скрипт, который в вашем случае, отправил бы отчёт на почту.
      Но в этом скрипте, этого нет, дабы не усложнять его.

        1. Windows LiveUser

          Вот scheduler . Все настроено. Делал через терминал Вашу команду. Если у Вас группа в телеграмме допустим или ник куда я смогу задать пару вопросов? Сюда не очень удобно писать.

          Прикрепленный файл:

    1. Андрей Торженов Автор записи

      Программирование процесс творческий… будет вдохновение — сделаю.

      У меня есть готовый скрипт, который я сам использую. Там это реализовано, но он сложнее и нет поддержки hilink. Его тоже дописывать надо.

      А зачем вам этот отчёт? Основная задача скрипта — автоматически восстановливать работу интернета в случае зависания модема, а не отчёты.

      Отчёты на функциональность не влияют.

          1. Windows LiveUser

            Спасибо! Все работает корректно! Поначалу в логах красным писало ошибку. Разобрался: в параметре
            :log warning «Wait 30 sec to modem boot»;
            :delay 30;
            }
            :delay 20;
            Вместо 20 поставил 40. Видимо письмо пытался отправить без соединения с интернетом. Увеличил до 40 — все полетело! спасибо!

            Прикрепленный файл:
             

          2. Андрей Торженов Автор записи

            Значит модем hilink дольше загружается чем со stick прошивкой.

            Внёс изменения в скрипт с учётом данной особенности. Увеличил таймер.

  3. Eugene Badakh

    Здравствуйте! Использую модем Stick в качестве резервного канала. Основной канал по кабелю, подключен к ether1.
    Подскажите, будет ли работать скрипт при таких исходных данных?

    1. Андрей Торженов Автор записи

      Здравствуйте!

      Должен работать, но я бы сделал для тестируемых с помощью скрипта узлов отдельные маршруты через модем .

      Т.е. если пинговать будете 8.8.8.8, то для этого узла, лучше сделать отдельный маршрут через USB модем.

  4. Денис Денисов

    Добрый день, Андрей, Столкнулись с проблемой периодического отвала связи на одной из точек. Уже когда закупили оборудование поняли, что микроты не очень хорошо дружат с usb модемами и отвалы связи это явление нормальное,Интересует следующий вопрос. не понял по поводу работы модема hilink вы пишите в примере отчетов, используется модем фирмы Huawei Model: E3372 мы так же используем данный модем, но на вебке написано Hilink ниже Huawei из этого я так и не понял, будет ли второй скрипт работать? mikrotik 950G я так понимаю, что управление usb в этом роутере присутствует.

    и еще вопрос дилетантский, как его добавить, с микротами мало сталкивался, я так понимаю в нетвоч на вкладку down Эти два скрипта вставлять?

    1. Андрей Торженов Автор записи

      Только на одной какой-то модели Микротика были проблемы с USB модемами. У меня много где используются и проблем нет.
      Сами USB модемы не очень надёжная вещь.

      E3372 может быть как со stick прошивкой, так и hilink. Если у вас веб интерфейс, значит у вас hilink модем. Второй скрипт работать не будет.

      950G? Может RB951G-2HnD ? У него есть управление питанием USB (https://wiki.mikrotik.com/wiki/Manual%3AUSB_Features#RouterBoard_USB_port_table)

      Скрипт запускается через планировщик, а не netwatch (тут подробней как ставить https://2keep.net/3g-internet-connection-test-on-mikrotik )

      1. Денис Денисов

        Может RB951G-2HnD верно, такие используем
        Хорошо, если второй скрипт не работает, то из первого мне следует удалить вот эту часть кода или просто ее закоментировать?
        # Запускаем скрипт «modemStatus» и получаем состояние модема и уровня сигнала сети
        execute «/system script run modemStatus»;
        :delay 15;

            /interface ppp-client enable $ifName;
        }
        

        И тогда просто будет отключаться питание usb порта?

          1. Денис Денисов

            Спасибо большое, Андрей, за помощь.
            Как определить имя модема не совсем понял. Имя интерфейса тут понятно, interfaces вижу что отображается как lte1, а вот имя где смотреть? если у меня модем хуавей с прошивкой hilink? Заранее благодарен.

          2. Андрей Торженов Автор записи

            Вам нужно не имя модема, а имя интерфейса модема

            # Имя интерфейса модема
            :global ifName "ppp-out1";
            

            в вашем случае lte1

  5. Денис Денисов

    Андрей, добрый день, пытаюсь добавить скрипт, я так понял, что закоменченое нужно убирать, так как при копировании винбокс не распознает кирилицу и получаются знаки, но вот убрал когда все коменты и оставил только программу, то при нажатии run script ничего не происходит, перед этим я вырубил на вебморде модема инет принудительно.

    1. Андрей Торженов Автор записи

      Комментарии можно не убирать, работе скрипта не мешают. Но да, кириллицу не понимает (можно сделать что бы понимал, но это долго).

      Скрипт лучше запустить из консоли, командой

      /system script run "script name"
      

      и смотреть в логах и консоли что пишет, какие ошибки…

      1. Mikhail Shevchenko

        Андрей здравствуйте. Большое спасибо за скрипт.Хотел только добавить про кириллицу-если раскладку поставить на русский , то ваш скрипт переноситься корректно с русскими буквами

  6. Александр

    Добрый, вот сижу и тестирую скрипт для дачи. Есть ряд предложений и выявленных проблем. модем 3372h modemType «stick» настройка по :local usbReset «no»; 1) возможно ли разделить проверку трафика и пинг, было пару раз когда ICMP ходили но при этом трафик был ниже 100Кб 2) было такое что модем подвисал или соединение подвисало при этом выполнялся скрипт отключить — подключить интерфейс РРР , но модем не реагировал. не хотел дергать питание на USB , дополнял командой :log warning «Modem AT-reset!»; /interface ppp-client set modem-init=»AT+CFUN=1″ 0; :delay 30; Тоже не помогло, только ребут по питанию USB

    Насилую модем Ютубом 4К =))

    1. Андрей Торженов Автор записи

      Не совсем понял вопросы.

      1. Тестовые ICMP пакеты отправляются, только если трафик ниже заранее указанного (<100 кбит/сек). Если трафик больше, то и нет смыла отправлять ICMP, модем явно не завис, трафик идёт.

      2. Может виснуть PPP соединение, для этого рестарится PPP, но может и виснуть сам модем, тогда нужно по USB питание дёргать. Так что отключать USB Power Reset не стоит. Будет иногда виснуть.

      1. Александр

        я предлагаю ребутить в любом случае если ходят не ходят ICMP пакеты если трафик ниже 100 Кбит Было соединение ниже 100 Кбит но при этом ICMP пакеты ходили. Пришлось ребутить модем. в ручную

          1. Александр

            Как опции <100 кбит/с и НЕ ПРОХОДЯТ icmp или только <100 кбит/сек
            Возможно модем у кого то работает на телематику, где соединение ниже <100 кбит/сек

          2. Андрей Торженов Автор записи

            Вариант с «только <100 кбит/сек» нельзя.

            Скрипт будет запускаться по планировщику, например каждый 5 мин, и если трафик ниже 100 кбит/сек будет перезагружать модем.

            Зачем такое? У вас же не идёт постоянно трафик на >100 кбит/с.

            Трафик он то есть (когда качают), то его нет (когда не качают). И когда не качают (трафик <100 кбит/сек) то модем каждый 5 мин будет перезагружаться.

Добавить комментарий