Нужен статус USB LTE ? Парсим лог

Раздел для тех, кто начинает знакомиться с MikroTik
Правила форума
Как правильно оформить вопрос.
Прежде чем начать настройку роутера, представьте, как это работает. Попробуйте почитать статьи об устройстве интернет-сетей. Убедитесь, что всё, что Вы задумали выполнимо вообще и на данном оборудовании в частности.
Не нужно изначально строить Наполеоновских планов. Попробуйте настроить простейшую конфигурацию, а усложнения добавлять в случае успеха постепенно.
Пожалуйста, не игнорируйте правила русского языка. Отсутствие знаков препинания и неграмотность автора топика для многих гуру достаточный повод проигнорировать топик вообще.

1. Назовите технологию подключения (динамический DHCP, L2TP, PPTP или что-то иное)
2. Изучите темку "Действия до настройки роутера".
viewtopic.php?f=15&t=2083
3. Настройте согласно выбранного Вами мануала
4. Дочитайте мануал до конца и без пропусков, в 70% случаев люди просто не до конца читают статью и пропускают важные моменты.
5. Если не получается, в Winbox открываем терминал и вбиваем там /export hide-sensitive. Результат в топик под кат, интимные подробности типа личных IP изменить на другие, пароль забить звездочками.
6. Нарисуйте Вашу сеть, рисунок (схему) сюда. На словах может быть одно, в действительности другое.
REX
Сообщения: 201
Зарегистрирован: 01 апр 2021, 08:19

Доброе время суток Уважаемые!
Вкратце суть такая, имеется подключенный к RB951 USB LTE модем(свисток). Иногда LTE интерфейс "падат", по разному бывает, но периодичность примерно 3-5 часов. Получить статус LTE интерфейса в переменную "простыми" действиями пока не возможно.
Более подробно
 
REX писал(а): 31 мар 2022, 13:48 Итак, собрал на прошлой неделе дополнительный канал в инет, я называю его контрольным, т.к. для него только один статический маршрут для api telegram, через бота получаю информационные сообщения о работе оборудования, часть которого на улице, часть внутри помещения, часть на улице удалённо. Приборы доп/контр. канала исключительно внутри помещения на случай вандализма и т.д.
Канал собрал на USB LTE модеме Huawei E3372h-153 с модифицированной прошивкой, подключенный к mikrotik через usb удлинитель с инжектором питания(включен). Внешнее питание инжектора пока не коммутируется через USB Power Reset, но планируется, жду запчасти :)
Всё вроде хорошо работает, однако... раз пример в 4-6 часов, иногда чуть раньше, иногда чуть дольше, обычно ночью, дольше, падает LTE интерфейс и через 1 секунду вновь поднимается.
Т.к. вся эта конструкция пока находится под "ручным" мониторингом, заметил:
1. Если выполнить скрипт(тестовый скрипт из терминала к api telegram после того, как интерфейс падал и вновь поднялся, с первого раза скрипт не выполняется в большинстве случаев, редко редко выполняется.
2. Если после падения и поднятия LTE интерфейса, не выполняя тестовый скрипт, сделать ping к IP api telegramm, первый пинг проходит, но он длинный, затем всё хорошо. Выполняя после этого тестовый скрипт, всё работает.
3. Большую часть времени LTE интерфейс "пустой", т.к. информационных сообщения пока мало, по факту только держится служебными пакетами с LTE.
4. Антенна, 4MIMO,панельная,в нужном частотном диапазоне, отъюстирована, стабильные "4 палки" LTE по web-интерфейсу модема, настраивалась по RSSI,SINR и т.д....в модеме всё есть для этого.
Собственно вопрос в том, каким образом обеспечить гарантированное соединения с api telegram, если LTE интерфейс иногда падает и нет гарантии того, что информационнное сообщение придёт в телегу.
Пока вижу два варианта:
1. Т.к. насколько я понял, по простому статус интерфейса не получить, возможен вариант получить его скриптом ув. Sertik
viewtopic.php?t=9865 и далее прикручивать необходимые действия также скриптом через Нетватч например.
2. Вариант проявлять активность в интерфейсе, также скриптом, например пинговать "лёгким" пингом IP api telegram, но с какой периодичностью, ведь в итоге трафик тоже расходуется, если часто, а если редко, что будет происходить в интервале между пингами....
вот собственно в настоящий момент раздумываю....
Ещё раз прошу прощения, что втиснулся :)
ну и т.к. у этого модема(с данной прошивкой) есть возможность подключиться через telnet, то экспериментирую с возможностью удалённой конфигурации посредством АТ-команд с подключения из mikrotik,telnet(ом) к модему.Вроде успешно, как минимум, читать данные АТ-командами получается...
из темы posting.php?mode=quote&f=3&p=84680
Продолжение:
2-й вариант, как я и предполагал, не оправдался в полной мере, т.к. LTE интерфейс запросто мог "упасть" и между интервалами пинга в 3 часа, и соответственно я переключился на поиск решения по 1-му варианту, хотя и были предварительные поиски :)
И таки нашёл, потому сразу оговорюсь, что по сути решение не моё, но мне очень понравилось, я решил им воспользоваться, чуть "перекроив" под свою задачу :)
https://temofeev.ru/info/articles/mikro ... -mikrotik/
Именно в этой статье автора, есть ошибка в скрипте, потом она была исправлена

вот что из этого вышло:
:global ParseLogAccountEndArrayID;

:local IDsEventsAccount [/log find where message ~ "lte1 link up"];

:local LenArrayIDs [:len $IDsEventsAccount];
:local StartArrayID [:find $IDsEventsAccount $ParseLogAccountEndArrayID];
:local EndArrayID ($IDsEventsAccount -> ($LenArrayIDs-1));

:if ($EndArrayID != $ParseLogAccountEndArrayID and [:tobool $ParseLogAccountEndArrayID] ) do={

:local StartArray [:find $IDsEventsAccount $ParseLogAccountLastRunID];

:for KeyArray from=($StartArrayID+1) to=($LenArrayIDs-1) do={
:local IDMessage ($IDsEventsAccount ->$KeyArray );
# здесь Вы можете вставить то действие, которое Вам нужно в случае LTE UP, например у #меня это однократный пинг к api.telegram и затем сообщение в телегу о том, что LTE Up

}}
:set ParseLogAccountEndArrayID $EndArrayID;

Прекрасно работает уже несколько суток, интервал выполнения скрипты=1 мин.
Последний раз редактировалось REX 15 апр 2022, 09:58, всего редактировалось 1 раз.


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

Пробовали пользоваться Netwatch?

Очень удобно.

По вашей задаче - выбираете какой нибудь хост в интернете, например гугловский днс (8.8.8.8), и в таблице маршрутизации добавляете правило, что этот хост доступен через интерфейс LTE. Если доступов в интернет много, в фаерволе добавьте правило, запрещающе выход ICMP пакетов на этот IP со всех интерфесов, кроме LTE. В результате пинг этого IP будет показывать статус интерфейса.
И настраиваете на него нетвач.
В разделах UP и Down пишите команды, которые вам нужны, в случае если хост доступен (LTE работает) или не доступен (LTE упал). Например выключение/включение интерфейса LTE.


REX
Сообщения: 201
Зарегистрирован: 01 апр 2021, 08:19

Erik_U писал(а): 13 апр 2022, 15:14 Пробовали пользоваться Netwatch?
Пробовал и использую, но для других целей, например пингую оборудование и при отсутствии пинга, сообщение в телегу. Только пингую не с LTE интерфейса, а с бриджа в проводной интернет. Сообщение в телегу, исключительно с LTE, статический маршрут прописан.
Вы приводите вариант, от которого я ушёл, т.е. пинг с нужного(LTE)интерфейса, но здесь вот в чём проблема: частый пинг-наматывается траффик, редкий пинг- непонятен статус LTE интерфейса в момент между пингами, а именно в этот момент может быть необходимость выполнить скрипт командой из телеги в отсутствии бриджа.
В моём варианте, LTE проверятеся пингом именно тогда, когда он упал, через секунду поднялся, делается пинг с нужного интерфейса, далее сообщение в телегу. Скрипт выполняется Шедулером.
Как таковой, интернет с LTE интерфейса мне не нужен, хотя и доступен. Интерфейс используется только как контрольный, т.е. не резервный канал интернета, а именно для передачи уведомлений и при необходимости, управления скриптами командами из телеги. Оборудование канала находится внутри помещения, а потому много более вандалоустойчивее.


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

Пингуйте роутер вашего оператора в его внутренней сети (в IP сети, которая непосредственно на модем назначена) - этот трафик не тарифицируется, он в интернет не выходит.
Что у вас за тариф такой, что вы пингов опасаетесь?

Проблем нет, если у вас интерфейс упал-поднялся. Проблемы, если ROS считает, что интерфейс в апе, а пакеты не идут.


REX
Сообщения: 201
Зарегистрирован: 01 апр 2021, 08:19

Erik_U писал(а): 13 апр 2022, 19:12 Пингуйте роутер вашего оператора в его внутренней сети (в IP сети, которая непосредственно на модем назначена) - этот трафик не тарифицируется, он в интернет не выходит.
Пинг роутера оператора не гарантирует того, что мне доступен api.telegram
Что у вас за тариф такой, что вы пингов опасаетесь?
250 руб. за 10Г трафика без временного ограничения до исчерпания трафика.Не то что опасаюсь, но забивать частыми пингами к api не хочу, да и неправильно это.А про редкие пинги в его сторону,уже говорил,интерфейс может упасть и подняться в любой момент, равно как в любой момент мне нужен "живой" LTE интерфейс.
Проблем нет, если у вас интерфейс упал-поднялся. Проблемы, если ROS считает, что интерфейс в апе, а пакеты не идут.
именно в этом и проблема, интерфейс падает на секунду и поднимается, но при поднятом интерфейсе, пакеты идут только на передачу (видно по трафику интерфейса), при этом модем "моргает индикатором",что "не в сети".Стоит пингануть api.telegram (по статическому маршруту), первый пинг длинный, но модем регится в сети, появляются пакеты и на приём,дальше без проблем до очередного Down/Up интерфейса.
Я уже ранее говорил, интерфейс практически "пустой" в смысле трафика, возможно просто оператор выкидывает "таких клиентов" :) в зависимости от нагрузки....ночью происходит заметно реже, чем днём...
потому, таким скриптом "оживляю" интерфейс по мере необходимости, парсится лог на предмет LTE Up, затем пинг и сообщение в телегу(сообщение потом заремарю, т.к. в общем всё работает как нужно, а ночью мне пиликающий телефон не особо по душе). Пусть пиликает, если реально что-то нужно делать или в более необходимых ситуация....например упал WiFi мост или что-то такое...
загляните пожалуйста в тему viewtopic.php?f=15&t=13654 , может что подскажите :)
"окирпичить" камеру как-то не хочется :)


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

REX писал(а): 13 апр 2022, 20:53 Пинг роутера оператора не гарантирует того, что мне доступен api.telegram
Если роутер оператора пингуется, а телеграмм не доступен - вы ничего не исправите, при всем желании. Но этим бесплатным пингом вы оживите свой модем, если оператор у него ресурсы отобрал.

REX писал(а): 13 апр 2022, 20:53250 руб. за 10Г трафика без временного ограничения до исчерпания трафика.Не то что опасаюсь, но забивать частыми пингами к api не хочу, да и неправильно это. А про редкие пинги в его сторону,уже говорил,интерфейс может упасть и подняться в любой момент, равно как в любой момент мне нужен "живой" LTE интерфейс.
Не съедите вы пингами 10G никогда. При однократном пинге раз в 10 сек за месяц вы пошлете 30*24*60*60/10= 259200 пакетов. Чтобы съесть 10G они должны быть по 10*1024*1024*1024/259200 = 41425 Байт. Максимальный размер пакета ~1500 Байт. А посылают пакеты в пинге по 32 -64 байта. На 3 порядка меньше, чем "рассчитанный размер" для съедания 10G. Вы 10G (250 руб) съедите однократными пингами раз в 10 сек за 1000 месяцев.
Вы написали, что у вас этот канал пустой.


REX
Сообщения: 201
Зарегистрирован: 01 апр 2021, 08:19

Если роутер оператора пингуется, а телеграмм не доступен - вы ничего не исправите, при всем желании. Но этим бесплатным пингом вы оживите свой модем, если оператор у него ресурсы отобрал.
Вот именно и тогда логичней пинговать сразу необходимый ресурс, тем более,что можно "прикрутить" необходимые действия, если LTE UP, а пинга к необходимому ресурсу нет. В моём скрипте сейчас этого действительно нет.Например перегрузить модем по питанию для начала...и кстати, модем подключен наверно уже пару недель непрерывно, как ранее говорил, через инжектор питания USB, и ни разу питание снимать не приходилось. Сейчас это возможно только вручную, т.к. запчасти для коммутации внешнего питания инжектора от питания USB роутера только пришли.
Не съедите вы пингами 10G никогда.....
Вы написали, что у вас этот канал пустой.
Я также написал, что и считаю неправильным долбить частыми пингами необходимый ресурс на постоянной основе. Зачем устраивать ресурсу такую "маленькую DDos-атаку" с моей стороны, учитывая, что мне этим ресурсом в любой момент может быть нужно воспользоваться :) Канал сейчас пустой, в дальнейшем он будет НЕ пустой и как минимум, трафик с него будет заметным в эпизодах, например удалённый просмотр видео периодический. А будет трафик, то возможно и скрипт не сработает, т.к. интерфейс от "бездеятельности" не упадёт и все остальные действия, прописанные в скрипте выполняться не будут.


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

REX писал(а): 14 апр 2022, 08:28
Если роутер оператора пингуется, а телеграмм не доступен - вы ничего не исправите, при всем желании. Но этим бесплатным пингом вы оживите свой модем, если оператор у него ресурсы отобрал.
Вот именно и тогда логичней пинговать сразу необходимый ресурс, тем более,что можно "прикрутить" необходимые действия, если LTE UP, а пинга к необходимому ресурсу нет.
...
Я также написал, что и считаю неправильным долбить частыми пингами необходимый ресурс на постоянной основе.
Нет, не логичней.
Вы можете поправить проблемы, которые возникают только между вашим модемом и базовой станцией оператора.
Проблемы, которые появились где-то дальше в интернете вы поправить манипуляциями со своим модемом не можете.
И чтобы не делать этих манипуляций из-за того, что телеграмм заблокирован, например, пинговать нужно именно то устройство, отсутствие ответа от которого укажет на проблему, решение которой подвластно вашим манипуляциям.

Пингуя ближайший к вам роутер оператора в его внутренней сети вы решите обе проблемы. И не "задолбите" пингами необходимый ресурс, и не получите ложных срабатываний. И плюс во внутренней сети оператора траффик обычно не тарифицируется.

Это про логику исключительно. Так то пингуйте что не хотите пинговать.


REX
Сообщения: 201
Зарегистрирован: 01 апр 2021, 08:19

Нет, не логичней.
Позволю не согласиться :-):
Вы можете поправить проблемы, которые возникают только между вашим модемом и базовой станцией оператора.
Проблемы, которые появились где-то дальше в интернете вы поправить манипуляциями со своим модемом не можете.
Я могу поправить проблемы только частично, как то например исчерпанный баланс трафика, оплатив его, но для этого нужно будет "допиливать" скрипт", для начала сделав USB Power Reset хотя-бы и если всё это не помогло, уже сообщение в телегу по "живому" интерфейсу(бридж). Пингуя оператора, я об этом не узнаю, т.к. LTE будет Up, модем в сети, но достучаться до нужного хоста я не смогу. Кроме того, проблемы могут быть у оператора, и зная, что с балансом у меня всё хорошо, USB Power Reset сделал, но пинга на нужный хост нет, а модем в сети, выяснять вопрос с оператором вручную.
Я соглашусь с тем, что конечно алгоритм скрипта не охватывает всех возможных вариантов в этом виде, возможно в будущем я займусь этим, где можно будет предусмотреть и ветку варианта по условию пинга оператора и другие условия.
Я Вас понял, спасибо за внимание и потраченное Вами время на общение, однако я остаюсь при своём мнении.


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

Скрипт с первого взгляда не рабочий. Где должна стоять фигурная скобка закрывающая условие ?

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

:global ParseLogAccountEndArrayID;

:local IDsEventsAccount [/log find where message ~ "lte1 link up"];

:local LenArrayIDs [:len $IDsEventsAccount];
:local StartArrayID [:find $IDsEventsAccount $ParseLogAccountEndArrayID];
:local EndArrayID ($IDsEventsAccount -> ($LenArrayIDs-1));

:if ($EndArrayID != $ParseLogAccountEndArrayID and [:tobool $ParseLogAccountEndArrayID] ) do={

:local StartArray [:find $IDsEventsAccount $ParseLogAccountLastRunID];

:for KeyArray from=($StartArrayID+1) to=($LenArrayIDs-1) do={
:local IDMessage ($IDsEventsAccount ->$KeyArray );
# здесь Вы можете вставить то действие, которое Вам нужно в случае LTE UP, например у #меня это однократный пинг к api.telegram и затем сообщение в телегу о том, что LTE Up

}
:set ParseLogAccountEndArrayID $EndArrayID;
Пришлось вставлять. Вот сюда:

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

:global ParseLogAccountEndArrayID;

:local IDsEventsAccount [/log find where message ~ "lte1 link up"];

:local LenArrayIDs [:len $IDsEventsAccount];
:local StartArrayID [:find $IDsEventsAccount $ParseLogAccountEndArrayID];
:local EndArrayID ($IDsEventsAccount -> ($LenArrayIDs-1));

:if ($EndArrayID != $ParseLogAccountEndArrayID and [:tobool $ParseLogAccountEndArrayID] ) do={

:local StartArray [:find $IDsEventsAccount $ParseLogAccountLastRunID];

:for KeyArray from=($StartArrayID+1) to=($LenArrayIDs-1) do={
:local IDMessage ($IDsEventsAccount ->$KeyArray );
# здесь Вы можете вставить то действие, которое Вам нужно в случае LTE UP, например у #меня это однократный пинг к api.telegram и затем сообщение в телегу о том, что LTE Up

}}
:set ParseLogAccountEndArrayID $EndArrayID;


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Ответить