Welcome to Sysnet Board คู่มือ การใช้งานอุปกรณ์ Network. Please log in or sign up.
สมาชิกทั้งหมด
17,595
กระทู้ทั้งหมด
10,026
หัวข้อทั้งหมด
4,711

  • การเขียน Script ตั้งเวลาการ Enable/Disable ค่าต่างๆ ในอุปกรณ์ Mikrotik
    เริ่มโดย yod
    Read 20,405 times
0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้
yod

 

 

การเขียน Script Schedule Enable/Disable ในอุปกรณ์ Mikrotik


เนื่องจากมีลูกค้าสอบถามกันมาค่อนข้างเยอะครับ โดยสรุปแล้วคือลูกค้าต้องการกำหนดเวลาการ Enable/Disable พวก Interface, Firewall หรือ Object ต่างๆที่สร้างไว้

หัวข้อนี้ผมจะเขียนถึงวิธีกันเลยน่ะครับ เพื่อที่จะได้ประยุกต์การใช้งานตามต้องการได้เลยครับ


ผมจะยกตัวอย่าง เป็นการให้เครื่อง Computer ใช้งาน Internet ได้ตามช่วงเวลา โดยช่วง 08.00 - 11.59 และ 13.00 - 17.00 จะไม่สามารถใช้งาน Internet ได้ แต่ช่วงเวลา 12.00 - 13.00 และ 17.00 - 07.59 สามารถใช้งาน Internet ได้


การ Block การเข้าใช้งาน Internet โดยหมายเลข MAC Address จะอยู่ในหัวข้อนี้นะครับ https://www.sysnetcenter.com/board/index.php/topic,1610.0/ โดยจะใช้หลักการของ Firewall --> Filter




ทีนี้การจะเขียน Script เพื่อ Enable/Disable เอาแบบง่ายๆเลยคือ ใช้วิธีไล่ Menu ใน Winbox เอา หรือดูคำสั่งผ่าน Terminal เช่นถ้าเราถ้าจะเข้าไป Config Firewall Filter rules จะต้องเข้า Menu IP --> Firewall --> Filter rules


ตัวอย่าง 1
หาคำสั่งในการจัดการ Firewall Filter Rules

พิมพ์ IP ที่ New Terminal จากนั้นกด Spacebar จะมีรายการคำสั่งถัดไปขึ้นมา สังเกตุได้ว่ารายการจะเป็นชื่อคล้ายๆกับ Menu ใน Winbox เพราะฉะนั้นการที่จะเข้าไปจัดการใน Filter จะต้องผ่าน ip firewall filter ทีนี้คำสั่งในการ enable/disable เราต้องมีการตั้งชื่อให้กับรายการที่เราสร้างเพื่อให้ script มันทำการอ้างอิงกับชื่อได้ถูก



โดยปกติในส่วน Interface จะมีการตั้งชื่อ name ได้ แต่ใน Firewall Filter เราไม่สามารถตั้งชื่อได้ครับ ถ้างั้นก็ต้องใช้ Comment เป็นชื่อในการอ้างอิง เลยจัดการใส่ Comment ให้กับ Filter rules ที่สร้างไว้เป็น block-internet ถ้ามีหลายๆรายการก็ใส่ชื่อ Comment ซ้ำๆกันได้เลยครับ หรือใช้ Comment แตกต่างกันไป เพื่อไว้อ้างอิงแทน name




ใน Script ใน Mikrotik ก็ต้องใส่คำสั่งให้มันค้นหาว่าต้องการ Enable/Disable ในเงื่อนไขอะไร ในตัวอย่างนี้ ให้หาว่า comment ที่เป็น block-internet ให้จัดการ Enable/Disable ซะ ก็ใส่คำสั่งเพิ่มไปเป็น [find comment=block-internet]

Script ก็จะเป็น

/ip firewall filter disable [find comment=block-internet]
/ip firewall filter enable [find comment=block-internet]




ตัวอย่างที่ 2
ในกรณีที่มีชื่อ (name) ในการอ้างอิง

ตัวอย่างนี้ผมใช้งานจริงครับ ทำ VPN ระหว่างที่บ้านกับที่ร้านเอาไว้ โดยตั้งชื่อ pptp client เป็น sysnetshop ที่ผมต้องการให้มี Enable/Disable การเชื่อมต่อ คือเมื่อห้างเซียร์ปิด ช่วงประมาณเที่ยงคืนเขาจะตัดไฟตามร้านค้าครับ เครื่องที่บ้านก็จะพยายาม Dial-Up ตลอดเวลา ก็เลยตั้งเวลาให้ Enable/Disable ตามช่วงเวลาเลย

การสร้าง PPTP Client จะเป็นการสร้าง Interface อย่างนึง ซึ่งจะมี name ให้อ้างอิงได้ เวลาเข้า Menu ผ่าน Winbox ก็จะเข้าที่ Menu Interface ได้เลย เพราะฉะนั้น Script ในการจัดการจะเป็นแบบนี้ /interface enable [find name=sysnetshop] และ /interface disable [find name=sysnetshop]




ค่อยๆลองเล่นดู โดยลองพิมพ์คำสั่งต่างๆที่ Terminal ใน Mikrotik ครับ  ;D ;D ;D


ที่นี้เราก็สร้าง Script ในการ Enable/Dissable Filrewall Filter

เข้า Menu System --> Script ตั้งชื่อตามรูปเลย ชื่อที่ตั้งใน Script ตัวใหญ่/เล็กมีผลนะครับ




หรือจะสร้าง Script ไว้ run ใน terminal


system script add name=unblockinternet policy=read,write source="/ip firewall filter disable [find comment=block-internet]"
system script add name=blockinternet policy=read,write source="/ip firewall filter enable [find comment=block-internet]"

จะมีรายการ Script ตามรูป




ทดสอบ Click [run] เพื่อ run script รายการใน Filrewall Filter จะต้องมีการ Enable/Disable




ที่นี้ก็สร้าง Schedule จะเป็นการสั่งให้อุปกรณ์ Mikrotik ทำงานคำสั่งอะรซักอย่างตามเวลาที่กำหนด และทำทุกๆระยะเวลาที่กำหนดไว้ เช่นทำงาน 1 ครั้งเวลา 8.00 ทุกๆวัน

ตรวจสอบเวลาใน Mikrotik ให้ถูกต้องด้วยนะครับ https://www.sysnetcenter.com/board/index.php?topic=1133.0

Name: ชื่อ Schedule ที่สร้าง
Start Date: วันที่เริ่มทำงาน (ตรงนี้ไม่ต้องสนใจครับ)
Start Time: เวลาที่เริ่มทำงาน (อันนี้สำคัญ เป็นการตั้งให้ทำงานเวลา 8.00)
Interval: ทำงานทุกๆเวลา
On Event: เมื่อถึงเวลาที่กำหนด ให้ทำอะไร ในรูปจะเป็นการใส่ชื่อของ Script คือ blockinternet
Next Run: เวลาการทำงานครั้งต่อไป



แต่ถ้าให้ง่ายก็ใช้ Script เลยครับ แก้ไขวันเวลา ชื่อ ตามสะดวกเลย

system scheduler add name=sch-block-internet1 start-date=nov/06/2012 start-time=08:00:00 interval=1d on-event=blockinternet policy=read,write
system scheduler add name=sch-unblock-internet1 start-date=nov/06/2012 start-time=12:00:00 interval=1d on-event=unblockinternet policy=read,write

system scheduler add name=sch-block-internet2 start-date=nov/06/2012 start-time=13:00:00 interval=1d on-event=blockinternet policy=read,write
system scheduler add name=sch-unblock-internet2 start-date=nov/06/2012 start-time=17:00:00 interval=1d on-event=unblockinternet policy=read,write



จะได้รายการขึ้นมา ตรวจสอบให้เรียบร้อย





ไม่งงกันนะครับ ค่อยๆลองเล่นกันดู แต่อย่าลืม Backup ค่า Config กันไว้ด้วย มีปัญหาจะได้ restore ค่าเดิมขึ้นมาได้ครับ  ;D ;D ;D




เรียน คุณยอด

จะเขียนสคริปเพื่อ Disable hotspot เป็นเวลา ยังไงครับ