Mikrotik RouterOS log/backup to email

в 5:34, , рубрики: backup, mikrotik, routeros, Железо, системное администрирование, метки: , ,

Хочу поделиться своим «вылизанным» скриптом бэкапа конфигурации и отсылки логов на почту с Mikrotik RouterBoard RB750GL (в моём случае 5.14, firmware 2.38). Думаю подойдёт к большинству устройств на этой славной ОС. Преимущество подхода в том, что сам файл конфигурации приходит в качестве приложенного к письму с логами файла. А логи находятся прямо в письме — не в приложении.

#:log info "///----> Я начал бэкапиться" (расскоменчиваю эти строки для дебага)
:global backupfile ([/system identity get name]. ".backup") #задаю переменную
:if ([/file find name=$backupfile] != "") do={/file rem $backupfile} #удаляю, если файл уже существует
:delay 2s

#:log info "///----> Подготавливаю лог для отправки"

:global logMessages;
:set logMessages ""
:foreach i in=[/log find ] do={
:set logMessages ($logMessages. [/log get $i time ]. " ");
:set logMessages ($logMessages. [/log get $i message ]);
:set logMessages ($logMessages. "n")
}

#:log info "///----> Создаю бэкап"
/system backup save name=$backupfile
#:log info "///----> Жду 5 сек. завершения процедуры"
:delay 5s
#:log info "///----> Посылаю конфиг на e-mail" (следующий код — одна длинная строка!)
/tool e-mail send to=mail@examle.com subject=(«router daily backup») file=$backupfile body=(«Бэкап конфигурационного файла маршрутизатора ». [/system identity get name]. ". nВыполнен: ". [/system clock get time]. " ". [/system clock get date]. " n____________________n nUptime: ". [/system resource get uptime]. "nСвободно оперативки: ". [/system resource get free-memory]. " из ". [/system resource get total-memory]. " Кбайт. nСвободное место: ". [/system resource get free-hdd-space]. " из ". [/system resource get total-hdd-space]. " Кбайт. nBad-блоки: ". [/system resource get bad-blocks]. " %. nЗагрузка процессора на данный момент: ". [/system resource get cpu-load]. " % n____________________n nПоследние записи в логе: n n". $logMessages. " n____________________ n". [/system identity get name])

#:log info "///----> Жду 10 сек. пока письмо отправится"
:delay 10s
/file remove $backupfile
:log info "///----> Бэкап завершён. Файл послан на mail@example.com. Ура!"

Ставлю на еженощное выполнение и в результате вместе с новостями с утра читаю вести с фронта — на почту приходит письмо такого вида

image

Автор: seventh

Поделиться

* - обязательные к заполнению поля