logo

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

Скрипт для Mikrotik: Обнаружение новой записи в журнале
Скрипт для 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

Канал источник:@i_odmin