Страница 1 из 1
Способ мониторирования чего-либо
Добавлено: 29 авг 2024, 12:37
Sertik
Без заморочек с парсингом лога и перебором циклами отслеживаем новую запись с указанными свойствами где угодно: Например:
: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
Те кто в теме поймут. Если будут нужны комментарии, напишу.
Главная фишка в том, что свойства отслеживаемой записи сразу доступны функции пользователя в качестве аргументов !
Re: Способ мониторирования чего-либо
Добавлено: 30 авг 2024, 00:48
Brook
Красивое решение.
Получается можно повесить процесс отслеживания на любую таблицу.
А в самой функции EventHandler прописать отправку в Телеграм например.
В функцию можно передавать параметры, которые доступны во время выполнения команды, а это все поля таблицы.
Круто. Спасибо, что поделились.
Re: Способ мониторирования чего-либо
Добавлено: 30 авг 2024, 02:31
Brook
Оказывается можно даже без
: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]
Re: Способ мониторирования чего-либо
Добавлено: 30 авг 2024, 09:40
Sertik
Про использование без :execute спросил знатоков на оф. форуме. Посмотрим, что ответят.
Re: Способ мониторирования чего-либо
Добавлено: 30 авг 2024, 12:11
Brook
Я вчера все протестировал. Работает так же.
В этом можно убедиться, если сохранить код выше в скрипт и запустить.
Re: Способ мониторирования чего-либо
Добавлено: 02 сен 2024, 09:33
Sertik
Не знаю. Вот ответ с оф. форума:
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