การตั้ง Scheduler ในอุปกรณ์ Mikrotik เพื่อทำการ Block User ตามช่วงเวลา
เนื่องจากมีสมาชิกท่านนึงสอบถามเรื่อง Schedule เข้ามา เรื่องการ Block User ไม่ให้เข้าใช้งาน Internet ตามช่วงเวลา
....อยากจะบอกว่า อุปกรณ์ Mikrotik RouterBoard นอกจากให้ไปซื้อโอเลี้ยงแล้ว น่าจะทำได้หมดครับ ;D ;D ;D
ตัวอย่างจะเป็นการกำหนด User Profile จำนวน 2 กลุ่ม โดยกลุ่ม 1 ให้เข้าใช้งาน Internet (Login เข้าใช้งาน) ได้เวลา 12.00-13.00น. และกลุ่ม 2 ใช้งานได้ 8.00 - 9.00 และ 12.00 - 13.00 น.
1. สร้าง User Profile ขึ้นมา จากตัวอย่างจะชื่อ userprofile1 และ userprofile2
(https://www.sysnetcenter.com/board/images/routerboard/scheduler/mikrotik-schedule-block-user-001.gif)
(https://www.sysnetcenter.com/board/images/routerboard/scheduler/mikrotik-schedule-block-user-002.gif)
2. สร้าง User โดยกำหนด Profile จากที่สร้างไว้ ตัวอย่าง
User: yod, user1 จะเป็น Profile: userprofile1 และ User: user2 จะเป็น userprofile2
(https://www.sysnetcenter.com/board/images/routerboard/scheduler/mikrotik-schedule-block-user-003.gif)
(https://www.sysnetcenter.com/board/images/routerboard/scheduler/mikrotik-schedule-block-user-004.gif)
(https://www.sysnetcenter.com/board/images/routerboard/scheduler/mikrotik-schedule-block-user-005.gif)
3. Run script ที่ New Terminal โดยผมจะตั้งชื่อ block-user-grp1, block-user-grp1 เพื่อทำการ Disable/Enable userprof1
และ block-user-grp2, nblock-user-grp2 เพื่อทำการ Disable/Enable userprof2
เพิ่ม Script สำหรับ Delete User ที่ Active หลังจาก Disable ครับ
/system script
add name=block-user-grp1 policy=read,write source="/ip hotspot user disable [find profile=userprof1]\r\
\n:local i\r\
\n:foreach i in=[ /ip hotspot user find where disabled=yes ] do={\r\
\n:local name [/ip hotspot user get \$i name]\r\
\n[ /ip hotspot active remove [find where user=\$user] ]\r\
\n#:log info \$name\r\
\n}"
add name=block-user-grp2 policy=read,write source="/ip hotspot user disable [find profile=userprof2]\r\
\n:local i\r\
\n:foreach i in=[ /ip hotspot user find where disabled=yes ] do={\r\
\n:local name [/ip hotspot user get \$i name]\r\
\n[ /ip hotspot active remove [find where user=\$user] ]\r\
\n#:log info \$name\r\
\n}"
เคาะ enter บรรทัดสุดท้ายด้วยนะครับ
(https://www.sysnetcenter.com/board/images/routerboard/scheduler/mikrotik-schedule-block-user-006.gif)
3. ทดสอบ Run script ที่ Menu System --> Script จะมีการ Disable/Enable รายชื่อ User ตามที่กำหนด User profile ไว้
(https://www.sysnetcenter.com/board/images/routerboard/scheduler/mikrotik-schedule-block-user-007.gif)
4. สร้าง Schedule สำหนับ Run Script ตามเวลาที่ต้องการ
Star-Date ไม่ต้องแก้ไขอะไรครับ ส่วน Start-Time แก้ไขเวลาตามต้องการได้เลยครับ
system scheduler add name=start-unblock-user-grp1 start-date=nov/06/2012 start-time=12:00:00 interval=1d on-event=unblock-user-grp1 policy=read,write
system scheduler add name=start-block-user-grp1 start-date=nov/06/2012 start-time=13:00:00 interval=1d on-event=block-user-grp1 policy=read,write
system scheduler add name=start-unblock-user-grp2-t1 start-date=nov/06/2012 start-time=08:00:00 interval=1d on-event=unblock-user-grp2 policy=read,write
system scheduler add name=start-block-user-grp2-t1 start-date=nov/06/2012 start-time=09:00:00 interval=1d on-event=block-user-grp2 policy=read,write
system scheduler add name=start-unblock-user-grp2-t2 start-date=nov/06/2012 start-time=12:00:00 interval=1d on-event=unblock-user-grp1 policy=read,write
system scheduler add name=start-block-user-grp2-t2 start-date=nov/06/2012 start-time=13:00:00 interval=1d on-event=block-user-grp1 policy=read,write
(https://www.sysnetcenter.com/board/images/routerboard/scheduler/mikrotik-schedule-block-user-008.gif)
ตรวจสอบ Scheduler ที่ Menu --> System --> Scheduler
(https://www.sysnetcenter.com/board/images/routerboard/scheduler/mikrotik-schedule-block-user-009.gif)
เรียบร้อยครับ :D
สามารถใช้หลักการ Scheduler ร่วมกับ Function อื่นๆใน Mikrotik ที่สามารถ Ebable/Disable ได้ทุกๆ Function เลยครับ
ผมลองดูแล้ว พอครบกำหนด user จะถูก disable แต่ user ยังสามารถเล่นเน็ตต่อไปได้ ซึ่งผมจะทำยังไงให้พอครบเวลาที่กำหนดเช่นเล่นได้ 12.00-13.00 แล้วมันตัด user ออกไปทำให้เล่นเน็ตไม่ได้
เพิ่งเห็นครับ
เมื่อกี้ผมได้ลองเขียน Script เพิ่มขึ้นมาใหม่คร่าวๆครับ จะเป็นการ Remove User ที่ Active อยู่ แต่ได้ถูก Disable ไป
:global i
:foreach i in=[ /ip hotspot user find where disabled=yes ] do={
:local name [/ip hotspot user get $i name]
[ /ip hotspot active remove [find where user=$user] ]
#:log info $name
}
เดี๋ยวพรุ่งนี้มาเรียบเรียงให้อีกทีครับ ;D ;D
ขอบคุณครับ มายืนยันว่าใช้แล้วได้ผลตามที่ต้องการครับ คุณยอด
แก้ไข script เรียบร้อยแล้วครับ ทางผมต้องขอโทษที่ไม่ได้ทดสอบให้ละเอียดครับ :-\
ผมอ่านแล้ว เห็นว่าพอจะใช้ได้กับ site งานผม ขอถามเพิ่มเติมนะครับ
ผมมีร้านกาแฟ เปิดบริการ 8.00-18.00
ต้องการให้ 1 user เข้าใช้พร้อมกันได้หลาย ๆ เครื่อง แต่กำหนดเวลาการเข้าใช้
user ละ 2 ชม. เดิมที่ผมทำใน userman แต่ต้องมาเคลียร์เวลาทุกวัน
เห็นวิธีนี้แล้วน่าสนใจรบกวนสอบถามสคลิปหน่อยครับต้องแก้และเพิ่มเติมส่วนไหนบ้าง
การตั้งให้ use ใช้ facebook บล็อคตามช่วงเวลาที่เรากำหนดทำอย่างไรครับ
เช่น
facebook เวลา 09.00-13.30 และ 13.30-15.30
แต่และเสาร์-อาทิตย์ใช้ได้ตลอด
ตัังวันที่ทำงานโดยเข้าไปที่ firewall rule > extra > time เลือก ติ๊กถูกที่วันที่จะให้ script ทำงานครับ
ทำไหมผมทำแล้วมันพอถึงเวลาunblock มันไม่ unblock แต่เวลา block ปกติครับ
ลองทดสอบสั่ง run ใน script list หรือยังครับ ถ้า run ผ่าน ลองดูในส่วน schedule ครับ ว่าพิมพ์อะไรผิดหรือเปล่า
Mikrotik 450G ทำได้ไหมครับผม
ขอบคุณครับ
/system script
add name=block-user-grp1 policy=read,write source="/ip hotspot user disable [find profile=userprof1]\r\
\n:local i\r\
\n:foreach i in=[ /ip hotspot user find where disabled=yes ] do={\r\
\n:local name [/ip hotspot user get \$i name]\r\
\n[ /ip hotspot active remove [find where user=\$user] ]\r\
\n#:log info \$name\r\
\n}"
add name=block-user-grp2 policy=read,write source="/ip hotspot user disable [find profile=userprof2]\r\
\n:local i\r\
\n:foreach i in=[ /ip hotspot user find where disabled=yes ] do={\r\
\n:local name [/ip hotspot user get \$i name]\r\
\n[ /ip hotspot active remove [find where user=\$user] ]\r\
\n#:log info \$name\r\
\n}"
ตรงนี้เป็นแค่ส่วนของ Code Block หรือป่าวครับ
ในส่วนของ Unblock ต้องทำอีกอัน พอดีมะกี้ผมลองแล้วได้มาเป็นประมาณนี้
/system script
add name=unblock-user-grp1 policy=read,write source="/ip hotspot user enable [find profile=userprof1]\r\
\n:local i\r\
\n:foreach i in=[ /ip hotspot user find where disabled=yes ] do={\r\
\n:local name [/ip hotspot user get \$i name]\r\
\n[ /ip hotspot active remove [find where user=\$user] ]\r\
\n#:log info \$name\r\
\n}"
code ลบ user ใน profile
-------------------------------------------------------------------------------------------
/ip hotspot user disable [find profile=userprofile1]
:foreach user in=[/ip hotspot user find profile=userprofile1] do={
:foreach activeuser in=[/ip hotspot active find name=$user] do={
/ip hotspot active remove $activeuser
}
/ip hotspot user disable $user
}
------------------------------------------------------------------------------------------------------------------------------------------------
(https://www.sysnetcenter.com/board/upload/files/images/oltctl-wireless-6e0a83.jpg)
(https://www.sysnetcenter.com/board/upload/files/images/oltct2-wireless-ca3000.jpg)
(https://www.sysnetcenter.com/board/upload/files/images/oltcu1-wireless-17198e.jpg)
(https://www.sysnetcenter.com/board/upload/files/images/oltcud-wireless-ee8b37.jpg)
ขอบคุณมากๆเลยครับ :D
คือผมกำลังทำระบบ hotspot โดยใช้ mikrotik hAP lite ทำเป็นขายบัตรแบบรายวัน แบบ username และ password มีกำหนดระยะเวลาใช้งาน 24 ชั่วโมง และต้องการให้ user ที่ใช้งานเมื่อครบเวลา 24 ชั่วโมงแล้วให้ระบบเตะออก และลบ user นั้นออกไป
เพราะที่เป็นอยู่ตอนนี้คือ username สามารถใช้งานซ้ำได้
Users found this pages searching for: