Страница 1 из 1

Скрипт отправки логов на почту

Добавлено: 04 июн 2014, 15:56
manbot
Наваял небольшой скрипт отправки логов на почту (в дополнение к бэкапу на почту конфигурации).
Надеюсь мой взгляд кому-то покажется более подходящим.

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

:log info "Log Backup Sended to email...";
:local sysname [/system identity get name];
:local sysver [/system package get system version];
#read log
:local logcontent
:foreach int in=[/log find ] do={
:set logcontent ("$logcontent\r\n" .[/log get $int time]. " - " .[/log get $int message])
}
#send email
/tool e-mail send to="mail@mail.local" subject=([/system identity get name] . " Log " . [/system clock get date]) body=("Log of $sysname\nRouterOS version: \
$sysver\nTime and Date stamp: " . [/system clock get time] . " " . [/system clock get date] . "\n " . \
$logcontent);
#delete old log
/system logging action set memory memory-lines=1
/system logging action set memory memory-lines=65000
:log info "System log cleared by email-log-backup script...";


Поясняю "что тут происходит":
1. Выясняем на какой мы железке (у меня их несколько)
2. Читаем лог файл
3. Отправляем почту (нужно вставить свой почтовый ящик!)
(ВНИМАНИЕ! У вас уже должен быть почтовый профиль настроен в /tool e-mail)
Краткий ликбез по настройке почты можно почитать пройдя по ссылке
4. Чистим лог и попутно увеличиваем дефолтный мизер логирования до 65000 строк (можно менять значение на предпочтительное Вам)
5. Оставляем в уже очищенном журнале метку о причине очистки.

ЗЫ Прошу не пинать ногами если уже проскакивало.

Re: Скрипт отправки логов на почту

Добавлено: 06 авг 2018, 16:26
winsk
manbot писал(а): 04 июн 2014, 15:56 Краткий ликбез по настройке почты можно почитать пройдя по ссылке
По какой ссылке? :smu:sche_nie:

Re: Скрипт отправки логов на почту

Добавлено: 06 сен 2018, 10:29
Sertik
Есть проблемка: переменная $logcontent не может быть длиннее 4096 байт. Видимо стоит ограничить этим значением и размер лога иначе скрипт будет вылетать.

Re: Скрипт отправки логов на почту

Добавлено: 14 ноя 2018, 08:39
w03zd8rc
Sertik писал(а): 06 сен 2018, 10:29 Есть проблемка: переменная $logcontent не может быть длиннее 4096 байт. Видимо стоит ограничить этим значением и размер лога иначе скрипт будет вылетать.
Тоже столкнулся с данной проблемой, когда размер лога выставлен 1000 строк. Решил Проблему изменением скрипта в такой вид:

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

:local LogLen 100

:local logMessages [:toarray ""]
:local count 0
:foreach i in=[/log find ] do={
	:set count ($count + 1)
	:set ($logMessages->$count) ([/log get $i time ] . " " . [/log get $i message ]);
}

:local LogToOut ""
if ([:len $logMessages] <= $LogLen) do={
	:set LogLen ($logMessages - 1)
}
:for i from=[:len $logMessages] to ([:len $logMessages] - $LogLen) do={	
	set $LogToOut ($LogToOut . ($logMessages->$i) . "\n")
}
LogLen - сколько посылать строк из лога.
LogToOut - собственно, что отправлять на почту
Лог приходит в более правильном виде: от последнего сообщения к первому.