ไมโครติก. ควบคุมผ่าน SMS โดยใช้เว็บเซิร์ฟเวอร์

ขอให้เป็นวันที่ดีทุกคน!

ครั้งนี้ฉันตัดสินใจที่จะอธิบายสถานการณ์ที่ดูเหมือนจะไม่ได้รับการอธิบายเป็นพิเศษบนอินเทอร์เน็ต แม้ว่าจะมีคำแนะนำอยู่บ้าง แต่ส่วนใหญ่เป็นเพียงการขุดโค้ดและวิกิของ Mikrotik อย่างมีระเบียบวิธี

งานจริง: ดำเนินการควบคุมอุปกรณ์ต่าง ๆ โดยใช้ SMS โดยใช้ตัวอย่างการเปิดและปิดพอร์ต

มีอยู่:

  1. เราเตอร์สำรอง CRS317-1G-16S+
  2. จุดเข้าใช้งาน Mikrotik NETMETAL 5
  3. โมเด็ม LTE R11e-LTE

เริ่มต้นด้วยความจริงที่ว่าจุดเชื่อมต่อ Netmetal 5 ที่ยอดเยี่ยมมีขั้วต่อซิมการ์ดแบบบัดกรีและพอร์ตสำหรับติดตั้งโมเด็ม LTE บนบอร์ด ดังนั้น ณ จุดนี้ โมเด็มที่ดีที่สุดจึงถูกซื้อจากสิ่งที่มีอยู่และรองรับโดยระบบปฏิบัติการของจุดนั้นเอง นั่นคือ R11e-LTE จุดเชื่อมต่อถูกถอดประกอบทุกอย่างถูกติดตั้งเข้าที่ (แม้ว่าคุณจำเป็นต้องรู้ว่าซิมการ์ดอยู่ใต้โมเด็มและไม่สามารถรับได้โดยไม่ต้องถอดเมนบอร์ดออก) ดังนั้นให้ตรวจสอบการทำงานของซิมการ์ด มิฉะนั้นคุณจะต้องถอดแยกชิ้นส่วนจุดเข้าใช้งานหลายครั้ง

ต่อไป เราเจาะรูสองสามรูในกรณีนี้ ติดตั้งผมเปีย 2 เส้น และยึดปลายด้านเข้ากับโมเด็ม น่าเสียดายที่ไม่มีรูปถ่ายของกระบวนการนี้รอดมาได้ ในทางกลับกันเสาอากาศสากลที่มีฐานแม่เหล็กติดอยู่กับผมเปีย

ขั้นตอนการตั้งค่าหลักมีการอธิบายไว้ค่อนข้างดีบนอินเทอร์เน็ต ยกเว้นช่องว่างการโต้ตอบเล็กน้อย ตัวอย่างเช่น โมเด็มหยุดรับข้อความ SMS เมื่อมี 5 ข้อความมาถึงและค้างอยู่ในกล่องจดหมาย การล้างข้อความและการรีสตาร์ทโมเด็มอาจไม่ได้แก้ปัญหาเสมอไป แต่ในเวอร์ชัน 6.44.1 การรับสัญญาณจะมีเสถียรภาพมากขึ้น กล่องจดหมายจะแสดง 4 SMS สุดท้าย ส่วนที่เหลือจะถูกลบโดยอัตโนมัติและไม่รบกวนชีวิต

เป้าหมายหลักของการทดลองคือการปิดและเปิดอินเทอร์เฟซบนเราเตอร์สองตัวบนเครือข่ายกายภาพเดียวกัน ปัญหาหลักคือ Mikrotik ไม่รองรับการจัดการผ่าน SNMP แต่อนุญาตเฉพาะการอ่านค่าเท่านั้น เลยต้องขุดไปอีกทางคือ Mikrotik API

ไม่มีเอกสารที่ชัดเจนเกี่ยวกับวิธีการควบคุม ดังนั้นฉันจึงต้องทดลองและคำแนะนำนี้จัดทำขึ้นสำหรับความพยายามในอนาคต

ในการจัดการอุปกรณ์หลายเครื่อง คุณจะต้องมีเว็บเซิร์ฟเวอร์ที่สามารถเข้าถึงได้และใช้งานได้บนเครือข่ายท้องถิ่น โดยจะต้องควบคุมโดยใช้คำสั่ง Mikrotik

1. บน Netmetal 5 คุณต้องสร้างสคริปต์สองสามตัวเพื่อเปิดและปิดตามลำดับ

system script
add dont-require-permissions=no name=disableiface owner=admin policy=
    ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=
    "/tool fetch http://WEB_SERVER_IP/di.php "
add dont-require-permissions=no name=enableiface owner=admin policy=
    ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=
    "/tool fetch http://WEB_SERVER_IP/en.php "

2. สร้าง 2 สคริปต์บนเว็บเซิร์ฟเวอร์ (แน่นอนว่าต้องติดตั้ง php บนระบบในกรณีนี้):

<?php
# file en.php enable interfaces    
require('/usr/lib/zabbix/alertscripts/routeros_api.class.php');

    $API = new RouterosAPI();
    $API->debug=true;

if ($API->connect('IP управляемого Mikrotik', 'логин администратора', 'пароль администратора')) {
    $API->comm("/interface/ethernet/enable", array(
    "numbers"=>"sfp-sfpplus16",));
}
   $API->disconnect();
?>

<?php
#file di.php disable interfaces
    require('/usr/lib/zabbix/alertscripts/routeros_api.class.php');

    $API = new RouterosAPI();
    $API->debug=true;

if ($API->connect('IP управляемого Mikrotik', 'логин администратор', 'пароль администратора')) {
    $API->comm("/interface/ethernet/disable", array(
    "numbers"=>"sfp-sfpplus16",));
}
   $API->disconnect();
?>

3. ดาวน์โหลด routeros_api.class.php จากฟอรัม Mikrotik และวางไว้ในไดเร็กทอรีที่สามารถเข้าถึงได้บนเซิร์ฟเวอร์

แทนที่จะเป็น sfp-sfpplus16 คุณต้องระบุชื่อของอินเทอร์เฟซที่จะปิดใช้งาน/เปิดใช้งาน

ตอนนี้เมื่อส่งข้อความถึงเบอร์ในแบบฟอร์ม

:cmd СЕКРЕТНЫЙКОД script enableiface
или
:cmd СЕКРЕТНЫЙКОД script disableiface 

NETMETAL จะเปิดตัวสคริปต์ที่เกี่ยวข้อง ซึ่งจะรันคำสั่งบนเว็บเซิร์ฟเวอร์

ความเร็วในการทำงานเมื่อรับ SMS คือเสี้ยววินาที ทำงานได้เสถียร

นอกจากนี้ยังมีฟังก์ชันสำหรับส่ง SMS ไปยังโทรศัพท์โดยระบบตรวจสอบ Zabbix และเปิดการเชื่อมต่ออินเทอร์เน็ตสำรองหากเลนส์ล้มเหลว บางทีนี่อาจอยู่นอกเหนือขอบเขตของบทความนี้ แต่ฉันจะบอกทันทีว่าเมื่อส่ง SMS ความยาวควรพอดีกับขนาดมาตรฐานของข้อความเดียวเพราะ... Mikrotik ไม่ได้แบ่งพวกมันออกเป็นส่วน ๆ และเมื่อมีข้อความยาว ๆ มาถึง มันก็จะไม่ส่งไป นอกจากนี้คุณต้องกรองอักขระที่ส่งในข้อความ มิฉะนั้น SMS จะไม่ถูกส่ง

ที่มา: will.com

เพิ่มความคิดเห็น