Скрипт для Mikrotik: Обнаружение новой записи в журнале

Этот скрипт проверяет, добавлена ли новая запись в журнал в определенный буфер.
В этом примере мы будем использовать журналы PPPoE:
/system logging action
add name="pppoe"
/system logging
add action=pppoe topics=pppoe,info,!ppp,!debug

Буфер журнала будет выглядеть примерно так же, как этот:

[admin@mainGW] > /log print where buffer=pppoe
13:11:08 pppoe,info PPPoE connection established from 00:0C:42:04:4C:EE

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

:global lastTime;

:global currentBuf [ :toarray [ /log find buffer=pppoe ] ] ;
:global currentLineCount [ :len $currentBuf ] ;
:global currentTime [ :totime [/log get [ :pick $currentBuf ($currentLineCount -1) ] time ] ];

:global message "";

:if ( $lastTime = "" ) do={
:set lastTime $currentTime ;
:set message [/log get [ :pick $currentBuf ($currentLineCount-1) ] message];

} else={
:if ( $lastTime < $currentTime ) do={
:set lastTime $currentTime ;
:set message [/log get [ :pick $currentBuf ($currentLineCount-1) ] message];
}
}


После обнаружения новой записи она сохраняется в переменной «message», которую в дальнейшем можно использовать для анализа сообщений журнала, например, для получения mac-адресов PPPoE-клиентов.

👉 @i_odmin
Просмотры: 1 538
Открыть в MAX Сообщить о неточности

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти