[RouterOS] 自動將 Log 郵寄至 E-Mail

前言

前陣子使用了 syslog-ng 來收 log,但是要看 log 還要登入進 Raspberry Pi 上看略嫌麻煩,不如讓 RouterOS 定時寄到我信箱看比較方便些。(本腳本適用於每日 log 量不大的家用設備,一天會超過兩三千條的還是乖乖用 syslog server 吧!)

Script

1
2
3
4
5
6
7
8
9
10
11
#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="[email protected]" subject=("[Syslog] " . "Mikrotik " . [/system clock get date]) body=$logcontent
#delete old log
/system logging action set memory memory-lines=1
/system logging action set memory memory-lines=500
:log info "finishing the log dump"

用法

  • 首先在 /system script 下新增腳本,將上面那段腳本貼上
  • /system scheduler 下新增行程,輸入 /system script run LogDump
    我是設定每 6 小時寄送一次,因為這個腳本一次寄送上限大概是 500 條 log 左右,
    如果設備每天的 log 不多,可以調整為每 12 小時或是每 24 小時寄送一次就好。

參考資料