Способ мониторирования чего-либо

Здесь выкладываем скрипты
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Ответить
Sertik
Сообщения: 1658
Зарегистрирован: 15 сен 2017, 09:03

Без заморочек с парсингом лога и перебором циклами отслеживаем новую запись с указанными свойствами где угодно: Например:

:global EventHandler do={
/log info "On $1 is added a new item $2"
:return 0
}

:execute {
:global EventHandler
/ip firewall layer7-protocol print follow-only where [$EventHandler "layer7-protocol" $name]
}

:delay 2s

/ip firewall layer7-protocol add name=123321

https://forum.mikrotik.com/viewtopic.ph ... 8#p1093948

Те кто в теме поймут. Если будут нужны комментарии, напишу.

Главная фишка в том, что свойства отслеживаемой записи сразу доступны функции пользователя в качестве аргументов !


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Аватара пользователя
Brook
Сообщения: 156
Зарегистрирован: 24 май 2022, 00:29

Красивое решение.

Получается можно повесить процесс отслеживания на любую таблицу.
А в самой функции EventHandler прописать отправку в Телеграм например.

В функцию можно передавать параметры, которые доступны во время выполнения команды, а это все поля таблицы.

Круто. Спасибо, что поделились.


Аватара пользователя
Brook
Сообщения: 156
Зарегистрирован: 24 май 2022, 00:29

Оказывается можно даже без :execute это делать. Т.к. print follow-only уже запускается в отдельном процессе.

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

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


:global EventHandler do={
/log info "On $1 is added a new item $2"
:return 0
}

/ip firewall layer7-protocol print follow-only where [$EventHandler "layer7-protocol" $name]


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

Про использование без :execute спросил знатоков на оф. форуме. Посмотрим, что ответят.


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Аватара пользователя
Brook
Сообщения: 156
Зарегистрирован: 24 май 2022, 00:29

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


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

Не знаю. Вот ответ с оф. форума:

Depends how it's run and needs, without :execute, if you executing commands directly from CLI it will remain interactive or if you run from saved script commands after print follow-only where ... will not be executed since it is interactive and waits. :execute runs commands in background and console will not be locked for executing other commands after.

Зависит от того, как он запускается и что требуется, без :execute, если вы выполняете команды непосредственно из интерфейса командной строки, он останется интерактивным, или если вы запускаете команды из сохраненного скрипта после того, как print выполнит только where ... не будет выполнен, поскольку он интерактивный и ожидает. :execute запускает команды в фоновом режиме, и консоль не будет заблокирована для последующего выполнения других команд.

Выходит, что чтобы не парить мозг надежнее использовать с :execute


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