讓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
最後總結一下,整個流程如下圖
請問大大 我用GMAIL 測試 都失敗
該怎樣設定ㄋ?
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
那請問版大 你是用哪一個MAIL
來做設定的ㄋ?
順道問依下 版大 方便留 MSN 給小弟
讓我有問題 直接方便 請教
抱歉最近比較忙沒時間回覆
我是使用Hinet的線路,所以是使用Hinet提供的SMTP
如果你也是Hinet的線路的話
可以把 Script 裡的 SMTP 換成下面這樣
#SMTP伺服器位置
:local SMTP “msa.hinet.net”
有問題的話大家再研究一下
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]
Vb8wLD nugcmdgfvndf, [url=http://iczidxvdzdck.com/]iczidxvdzdck[/url], [link=http://tpdqmwbbvlep.com/]tpdqmwbbvlep[/link], http://bqkyjeaqzaba.com/
[url=http://buyzithromaxonlinerx.com/#20563]buy generic zithromax[/url] – generic zithromax , http://buyzithromaxonlinerx.com/#13804 zithromax 250mg
需要特別開 firewall 嗎?
我設定了 gmail 的 smtp server
用 tls,帳號、密碼、port 都設定了,還是無法發送出去
to Gemma:
1.先把firewall擋的規則全部關閉。
2.於ROS上使用ping的工具測試ROS本機連gmail的smtp server可否可通。
3.看看gmail上的帳號,是否有開啟允許使用smtp service。
4.察看log檔,觀察失敗的原因。
請問小弟家中是hinet adsl pppoe取的ip的,如果不想以ddns更新rb450g的ip資訊的話,可以用script的方式,將rb450g目前取得到的hinet ip,mail到自己gmail中嗎?
目前有參而mobile01(http://www.mobile01.com/topicdetail.php?f=110&t=3205444&p=182)在script中設定log寄到gmail。
請問如果在這個script中增加自己現有的hinet pppoe ip呢
謝謝
To terry:
可以參考「RouterOS 動態更新IP到 No-IP」這篇。
http://www.minitw.com/routeros/routeros-dynamically-update-the-ip-to-no-ip.htm?variant=zh-tw
原本是要把IP更新到No-IP,現在改成email的方式,應該就可以符合你的需求了。
指令與語法的部份,就要靠你自已囉。
先感謝您分享的文章:
另外以下是小弟修改您的指令及語法所完成的,再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;}
}
To JHNET:
感謝你的分享