讓RouterOS自動把Log檔email出去

讓RouterOS自動把Log檔Mail出去,這個動作可以拆成2個步驟來執行

1.在System->Script建立相關的Script(產生Log檔案,發送mail)

2.在System->Scheduler建立排程(判斷Log的行數到達我們的設定值就Mail出去)

第1個部份,先建立2個Script

建立一個名為MailLog的Script

請修改SMTP伺服器位置(記得ROS的DNS要有,才可以解析)、寄件人、收件人的資訊


#Script在RouterOS 3.20中測試通過
#Date:2009/03/14
#Script Name:MailLog

#SMTP伺服器位置
:local SMTP "xxx.smtp.com"

#寄件人
:local MailFrom "ROSLog<ROS@xxxxxxxxx.com>"

#收件人
:local MailTo "REC@xxxxxxxxx.com"

#Log檔的名稱(位於/file)
:local LogFileName

#寄出後是否刪除已存檔的Log(/file裡的檔案)
#0=保留  1=刪除
:local DeleteLogFile 1

:set LogFileName ([/system identity get name] . "Log-" . [:pick [/system clock get date] 7 11] . [:pick [/system clock get date] 0 3] . [:pick [/system clock get date] 4 6] . ".txt");

/tool e-mail set from=$MailFrom;

/log print file=[$LogFileName];

/tool e-mail send to=$MailTo server=[:resolve $SMTP] subject=([/system identity get name] . " Log " . [/system clock get date]) file=[$LogFileName];

:delay 10;

:if ($DeleteLogFile =1) do={
/file rem [/file find name=($LogFileName)];
}

:log info ("System Log emailed at " . [/sys cl get time] . " " . [/sys cl get date]);

接下來建立名為AutoMailLog的Script

超過幾條就把Log寄出去請依照你的實際需要設置

寄出後會自動清空Log,如果你想保留Log

那就把:local IsClearLog 1 改為:local IsClearLog 0

不過這樣子會造成每次都會寄發Mail,請特別注意


#Script在RouterOS 3.20中測試通過
#Date:2009/03/14
#Script Name:AutoMailLog

#超過幾條就把Log寄出去
:local MaxLine 300

#寄出後是否要清空現有的Log資訊
#0=保留  1=清空
:local IsClearLog 1

:if ([/log print count-only] >= $MaxLine) \
do={
/system script run MailLog;
:if ($IsClearLog = 1) \
do={/system script run ClearMemoryLog;}
}

第2個部份是建立Scheduler排程

在System->Scheduler 新增一個名為MailLog的排程

內容只有一行,時間是我是設定為5分鍾跑一次


/system script run AutoMailLog

最後總結一下,整個流程如下圖

參考資料:http://forum.mikrotik.com/viewtopic.php?f=9&t=29122

16 thoughts on “讓RouterOS自動把Log檔email出去

    1. GMail 的SMTP是需要帶帳號密碼驗証的,而RouterOS 3.20(含)以下目前並沒有支援

      不過3.25版以上似乎就有支援此種帶帳號密碼驗証的方式。因手邊沒有最新的版本,沒辦法試。

      /tool e-mail send to=”myhotmail@hotmail.com” from=”myhotmail@hotmail.com” user=”myhotmail@hotmail.com” password=”myhotmailpass” server=65.55.172.254 s
      ubject=”testing” body=”testing testing” file=testfile

      可以參考這個網址
      http://forum.mikrotik.com/viewtopic.php?f=9&t=32814

  1. 那請問版大 你是用哪一個MAIL
    來做設定的ㄋ?

    順道問依下 版大 方便留 MSN 給小弟

    讓我有問題 直接方便 請教

    1. 抱歉最近比較忙沒時間回覆
      我是使用Hinet的線路,所以是使用Hinet提供的SMTP
      如果你也是Hinet的線路的話
      可以把 Script 裡的 SMTP 換成下面這樣

      #SMTP伺服器位置
      :local SMTP “msa.hinet.net”

      有問題的話大家再研究一下

  2. Pills Round White Y Logo http://www.neveahwellness.com/ – cheap valium online Using valium may lead to some negative side effects including sedation, retrograde amnesia (especially at higher doses), extreme excitement, rage or even the worsening of seizures in those with epilepsy. [url=http://www.neveahwellness.com/]buy cheap valium[/url]

  3. to Gemma:
    1.先把firewall擋的規則全部關閉。
    2.於ROS上使用ping的工具測試ROS本機連gmail的smtp server可否可通。
    3.看看gmail上的帳號,是否有開啟允許使用smtp service。
    4.察看log檔,觀察失敗的原因。

  4. 先感謝您分享的文章:
    另外以下是小弟修改您的指令及語法所完成的,再6.30.1寄出後清空Log資訊
    必須更改為:
    /system logging action set memory memory-lines=1;
    /system logging action set memory memory-lines=1000;
    小弟此回饋給大家謝謝
    ————————————————————————————————————–
    #Script在RouterOS 6.30.1中測試通過
    #Date:2015/07/30
    #Script Name:AutoMailLog

    #超過幾條就把Log寄出去
    :local MaxLine 900

    #寄出後是否要清空現有的Log資訊
    #0=保留 1=清空
    :local IsClearLog 1

    :if ([/log print count-only] >= $MaxLine) \
    do={
    /system script run MailLog;
    :if ($IsClearLog = 1) \
    do={/system logging action set memory memory-lines=1;
    /system logging action set memory memory-lines=1000;}
    }

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *