Код: Выделить всё
# script by Virtue
:do {
:delay 1
:local logs
:local logs1
:local counter 0
:local LogsAll [/log print count-only]
:foreach i in=[/log find] do={
:if ($counter >= ($LogsAll - 10)) do={
:set logs ($logs, $i)
}
:set counter ($counter + 1)
}
:local timeNow [/system clock get time]
:if ([:pick $timeNow 0 2] < 03) do={
:foreach h in=$logs do={
:if ([:len [/log get $h time]] = 14) do={
:if ([:pick [/log get $h time] 6 14] > ($timeNow - 00:00:59) and [:pick [/log get $h time] 6 14] < $timeNow) do={
:set $logs1 ($logs1, $h)}}
:if ([:len [/log get $h time]] = 15) do={
:if ([:pick [/log get $h time] 7 15] > ($timeNow - 00:00:59) and [:pick [/log get $h time] 7 15] < $timeNow) do={
:set $logs1 ($logs1, $h)}}
:if ([:len [/log get $h time]] = 19) do={
:if ([:pick [/log get $h time] 11 19] > ($timeNow - 00:00:59) and [:pick [/log get $h time] 11 19] < $timeNow) do={
:set $logs1 ($logs1, $h)}}}} else={
:foreach h in=$logs do={
:if ([:len [/log get $h time]] = 8) do={
:if ([/log get $h time] > ($timeNow - 00:00:59) and [/log get $h time] < $timeNow) do={
:set $logs1 ($logs1, $h)}}
:if ([:len [/log get $h time]] = 19) do={
:if ([:pick [/log get $h time] 11 19] > ($timeNow - 00:00:59) and [:pick [/log get $h time] 11 19] < $timeNow) do={
:set $logs1 ($logs1, $h)}}}}
:if ([:len $logs1] > 0) do={
:local messages
:foreach i in=$logs1 do={
:local imessage [/log get $i message]
:if ($imessage ~"telnet" and $imessage ~"logged in") do={} else={
:local topics [/log get $i topics]
:if ($topics ~"wireless" || $topics ~"warning" || $imessage ~"logged in" || $topics ~"error" || $topics ~"critical") do={
:if ($imessage ~ "[0-F][0-F]:[0-F][0-F]:[0-F][0-F]:[0-F][0-F]:[0-F][0-F]:[0-F][0-F]") do={
:foreach k in=[/ip dhcp-server lease find] do={
:local mac [/ip dhcp-server lease get $k mac-address]
:if ($imessage ~ "$mac") do={
:set imessage ($imessage . " / " . [/ip dhcp-server lease get $k comment])
}
}
}
:local currentTime [ /log get $i time ]
:set messages ($messages."|".$currentTime." ".$imessage."%0A")
}
}
}
:if ([:len $messages] > 0 ) do={
:local botID "botxxxxxx"
:local chatID "-000000000"
:local mikname [/system identity get name]
/tool fetch keep-result=no url="https://api.telegram.org/$botID/sendmessage?chat_id=$chatID&text= $mikname : %0A$messages"
}
}
} on-error={:put error}
Для отключения отслеживания вайфай подключений, стираем из кода $topics ~"wireless"
Вначале скрипта в строке :if ($counter >= ($LogsAll - 10)) do={ число 10 можно поменять - это количество последних проверяемых строк лога (чтоб не парсить каждый раз весь лог)
Меняем botID и chatID вконце кода на свои..