Скрипт контроля работы мобильного Интернет’а (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.
В сущности, это не один, а два скрипта:
- healthCheck — скрипт проверки работы мобильного Интернета. Данный скрипт, с помощью планировщика запускается каждые 5 минут и выполняет тестирование мобильного Интернета.
- modemStatus — скрипт вызывается из скрипта «healthCheck» и выполняет опрос модема со Stick прошивкой, получая с него следующие данные: состояние модем, технология подключения к сети (3G, 4G), оператор, средний уровень сигнала RSSI и др. Для модема типа HiLink данный скрипт не нужен, т.к. с HiLink модема невозможно получить информацию.
Если используется модем со Stick прошивкой, то в MikroTik необходимо установить два скрипта.
В комментариях в скриптах, я постарался по максимуму описать алгоритм их работы. В случае необходимости, это вам поможет подправить скрипты под свои задачи.
Скрипт healthCheck
С помощью планировщика скрипт «healthCheck» запускается каждые 5 минут и выполняет тестирование Интернета.
# 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
Скрипт «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.
Скрипт опубликованный в данной статье, это упрощённая версия скрипта, используемого мной для своих задач. В скрипте, что использую я, более сложная логика реакции на возникающие проблемы с Интернет’ом, но в связи с этим, он сложнее и больше.
Т.к. я не использую данный скрипт в своей работе, в нём могут всплывать ошибки, которые я не отловил в процесс отладки. Пишите о них в комментарии, я исправлю.
Похожие записи...
Latest posts by Андрей Торженов (see all)
- Куда переходить с Helpdesk OTRS? Альтернативы OTRS - 27/02/2022
- Windows 11. Не работает обновление, не входит в OneDrive, OneNote и другие Microsoft сервисы - 29/01/2022
- Попытка взлома Mikrotik? - 24/12/2021
- После обновления до Proxmox 7.1 не запускаются виртуальные машины - 28/11/2021
- libflashplayer.so пропатченный от Time bomb - 11/02/2021
Добрый день!
Подскажите, а с модемами на hilink будет работать?
hilink модемом Mikrotik управлять не может. Не может он с него получить и уровни сигнала, и разорвать соединение и т.д. Единственное что можно, это перезагрузить питание usb, если Mikrotik это поддерживает.
Данный скрипт не поддерживает hilink модем, но его можно для него переделать, значительно упростив скрипт.
Добавил в скрипт поддержку hilink модемов.
Но как я писал ранее, Mikrotik должен поддерживать функцию USB power reset: https://wiki.mikrotik.com/wiki/Manual:USB_Features
Добрый день! Использую модем HILINK. Установил скрипт, а он в логе вон что пишет. Отсутствует Stick и останавливает выполнение скрипта. Подскажите, что надо поправить.
2 вопрос: настроил почту ya.ru, добавил свои данные. А на какой адрес будет приходить оповещения? На этот же? Получается будет отправлять сам себе?
Прикрепленный файл:
Со скриптом разобрался. Не поправил кое что. Но правда, на мой адрес логи не отправляет, хотя тестовое письмо я пробовал, отправляется. Проверял так: на самом хайлинк отключил сеть- ждал 10 минут, ничего после подключения к интернету не пришло.
Упрощенная логика скрипта такая:
Пингует заданные узлы, если они недоступны, то перезагружает модем, опять тестирует доступность узлов, если они стали доступны, то отправляется email с отчётом.
В вашем случае, вы отключили интернет сами, скрипт его пытается тестировать, выключает/включает модем, но инет не появляется… он и не отправляет отчёт, интернета то нет… как он его отправит?
Для себя я использую более сложный скрипт, который в вашем случае, отправил бы отчёт на почту.
Но в этом скрипте, этого нет, дабы не усложнять его.
А как тогда можно проверить отправку оповещения? Не просто test, а вот полноценный отчет?
Вот scheduler . Все настроено. Делал через терминал Вашу команду. Если у Вас группа в телеграмме допустим или ник куда я смогу задать пару вопросов? Сюда не очень удобно писать.
Прикрепленный файл:
Например можно удалить шлюз по умолчанию (скрипт проверяет его наличие).
Как удалить шлюз по умолчанию?
Например из консоли
Или через web/winbox
А что, если Вы добавите и в этот скрипт принудительное отправление отчета, после появления интернета?
Программирование процесс творческий… будет вдохновение — сделаю.
У меня есть готовый скрипт, который я сам использую. Там это реализовано, но он сложнее и нет поддержки hilink. Его тоже дописывать надо.
А зачем вам этот отчёт? Основная задача скрипта — автоматически восстановливать работу интернета в случае зависания модема, а не отчёты.
Отчёты на функциональность не влияют.
Как определить, что я правильно установил скрипт? Ошибок в логе никаких нет.
Например, как писал выше, удалить шлюз по умолчанию.
Скрипт должен это определить, перезагрузить по питанию USB модем и прислать отчёт.
Спасибо! Все работает корректно! Поначалу в логах красным писало ошибку. Разобрался: в параметре
:log warning «Wait 30 sec to modem boot»;
:delay 30;
}
:delay 20;
Вместо 20 поставил 40. Видимо письмо пытался отправить без соединения с интернетом. Увеличил до 40 — все полетело! спасибо!
Прикрепленный файл:
Значит модем hilink дольше загружается чем со stick прошивкой.
Внёс изменения в скрипт с учётом данной особенности. Увеличил таймер.
А в какой строчке и что конкретно поменяли? Очень интересно.
Увеличил таймер ожидания загрузки модема после USB Power Reset. Также, как и сделали вы.
Здравствуйте! Использую модем Stick в качестве резервного канала. Основной канал по кабелю, подключен к ether1.
Подскажите, будет ли работать скрипт при таких исходных данных?
Здравствуйте!
Должен работать, но я бы сделал для тестируемых с помощью скрипта узлов отдельные маршруты через модем .
Т.е. если пинговать будете 8.8.8.8, то для этого узла, лучше сделать отдельный маршрут через USB модем.
Добрый день, Андрей, Столкнулись с проблемой периодического отвала связи на одной из точек. Уже когда закупили оборудование поняли, что микроты не очень хорошо дружат с usb модемами и отвалы связи это явление нормальное,Интересует следующий вопрос. не понял по поводу работы модема hilink вы пишите в примере отчетов, используется модем фирмы Huawei Model: E3372 мы так же используем данный модем, но на вебке написано Hilink ниже Huawei из этого я так и не понял, будет ли второй скрипт работать? mikrotik 950G я так понимаю, что управление usb в этом роутере присутствует.
и еще вопрос дилетантский, как его добавить, с микротами мало сталкивался, я так понимаю в нетвоч на вкладку down Эти два скрипта вставлять?
Только на одной какой-то модели Микротика были проблемы с 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 )
Может RB951G-2HnD верно, такие используем
Хорошо, если второй скрипт не работает, то из первого мне следует удалить вот эту часть кода или просто ее закоментировать?
# Запускаем скрипт «modemStatus» и получаем состояние модема и уровня сигнала сети
execute «/system script run modemStatus»;
:delay 15;
И тогда просто будет отключаться питание usb порта?
В первом нужно сделать начальные настройки. Тип модема и имя интерфейса.
Спасибо большое, Андрей, за помощь.
Как определить имя модема не совсем понял. Имя интерфейса тут понятно, interfaces вижу что отображается как lte1, а вот имя где смотреть? если у меня модем хуавей с прошивкой hilink? Заранее благодарен.
по поводу типа модема увидел, извиняюсь за невнимательность.
Вам нужно не имя модема, а имя интерфейса модема
в вашем случае lte1
Андрей, добрый день, пытаюсь добавить скрипт, я так понял, что закоменченое нужно убирать, так как при копировании винбокс не распознает кирилицу и получаются знаки, но вот убрал когда все коменты и оставил только программу, то при нажатии run script ничего не происходит, перед этим я вырубил на вебморде модема инет принудительно.
Комментарии можно не убирать, работе скрипта не мешают. Но да, кириллицу не понимает (можно сделать что бы понимал, но это долго).
Скрипт лучше запустить из консоли, командой
и смотреть в логах и консоли что пишет, какие ошибки…
Андрей здравствуйте. Большое спасибо за скрипт.Хотел только добавить про кириллицу-если раскладку поставить на русский , то ваш скрипт переноситься корректно с русскими буквами
Пожалуйста!
Спасибо за информацию!
Добрый, вот сижу и тестирую скрипт для дачи. Есть ряд предложений и выявленных проблем. модем 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К =))
Не совсем понял вопросы.
Тестовые ICMP пакеты отправляются, только если трафик ниже заранее указанного (<100 кбит/сек). Если трафик больше, то и нет смыла отправлять ICMP, модем явно не завис, трафик идёт.
Может виснуть PPP соединение, для этого рестарится PPP, но может и виснуть сам модем, тогда нужно по USB питание дёргать. Так что отключать USB Power Reset не стоит. Будет иногда виснуть.
я предлагаю ребутить в любом случае если ходят не ходят ICMP пакеты если трафик ниже 100 Кбит Было соединение ниже 100 Кбит но при этом ICMP пакеты ходили. Пришлось ребутить модем. в ручную
Я правильно понял, что вы хотите, что бы ВСЕГДА, когда трафик ниже 100 кбит/с и ПРОХОДЯТ icmp — ребутить модем?
Как опции <100 кбит/с и НЕ ПРОХОДЯТ icmp или только <100 кбит/сек
Возможно модем у кого то работает на телематику, где соединение ниже <100 кбит/сек
Вариант с «только <100 кбит/сек» нельзя.
Скрипт будет запускаться по планировщику, например каждый 5 мин, и если трафик ниже 100 кбит/сек будет перезагружать модем.
Зачем такое? У вас же не идёт постоянно трафик на >100 кбит/с.
Трафик он то есть (когда качают), то его нет (когда не качают). И когда не качают (трафик <100 кбит/сек) то модем каждый 5 мин будет перезагружаться.
ок, согласен