Нужен статус USB LTE ? Парсим лог
Добавлено: 13 апр 2022, 13:56
Доброе время суток Уважаемые!
Вкратце суть такая, имеется подключенный к RB951 USB LTE модем(свисток). Иногда LTE интерфейс "падат", по разному бывает, но периодичность примерно 3-5 часов. Получить статус LTE интерфейса в переменную "простыми" действиями пока не возможно.
Более подробно из темы 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 мин.
Вкратце суть такая, имеется подключенный к RB951 USB LTE модем(свисток). Иногда LTE интерфейс "падат", по разному бывает, но периодичность примерно 3-5 часов. Получить статус LTE интерфейса в переменную "простыми" действиями пока не возможно.
Более подробно из темы 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 мин.