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

Здесь выкладываем скрипты
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Ответить
manbot
Сообщения: 1
Зарегистрирован: 04 июн 2014, 15:52

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

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

: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. Оставляем в уже очищенном журнале метку о причине очистки.

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


winsk
Сообщения: 2
Зарегистрирован: 06 авг 2018, 15:20

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


Sertik
Сообщения: 1598
Зарегистрирован: 15 сен 2017, 09:03

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


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
w03zd8rc
Сообщения: 9
Зарегистрирован: 24 авг 2018, 11:02

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 - собственно, что отправлять на почту
Лог приходит в более правильном виде: от последнего сообщения к первому.


Ответить