Mikrotik. Điều khiển qua SMS bằng máy chủ WEB

Chúc mọi người một ngày tốt lành!

Lần này tôi quyết định mô tả một tình huống dường như không được mô tả cụ thể trên Internet, mặc dù có một số gợi ý về nó, nhưng hầu hết đó chỉ là việc đào mã dài dòng và wiki của chính Mikrotik một cách có phương pháp.

Nhiệm vụ thực tế: thực hiện kiểm soát một số thiết bị bằng SMS, sử dụng ví dụ về bật và tắt cổng.

Có sẵn:

  1. Bộ định tuyến phụ CRS317-1G-16S+
  2. Điểm truy cập Mikrotik NETMETAL 5
  3. Modem LTE R11e-LTE

Hãy bắt đầu với thực tế là điểm truy cập Netmetal 5 tuyệt vời có một đầu nối thẻ SIM được hàn và một cổng để cài đặt modem LTE. Do đó, đối với thời điểm này, về cơ bản, modem tốt nhất đã được mua từ những gì có sẵn và được hỗ trợ bởi chính hệ điều hành của điểm đó, cụ thể là R11e-LTE. Điểm truy cập đã được tháo rời, mọi thứ đã được lắp vào đúng vị trí của nó (mặc dù bạn cần biết rằng thẻ SIM nằm dưới modem và không thể lấy được nếu không tháo bo mạch chính), vì vậy hãy kiểm tra chức năng của thẻ SIM, nếu không bạn sẽ phải tháo rời điểm truy cập nhiều lần.

Tiếp theo, chúng tôi khoan một vài lỗ trên vỏ, lắp 2 bím tóc và cố định các đầu vào modem. Thật không may, không có bức ảnh nào về quá trình này còn sót lại. Mặt khác, ăng-ten phổ thông có đế từ tính được gắn vào bím tóc.

Các bước thiết lập chính được mô tả khá đầy đủ trên Internet, ngoại trừ những thiếu sót nhỏ trong tương tác. Ví dụ: modem ngừng nhận tin nhắn SMS khi có 5 tin nhắn đến và chúng bị treo trong Hộp thư đến; việc xóa tin nhắn và khởi động lại modem không phải lúc nào cũng giải quyết được vấn đề. Nhưng ở phiên bản 6.44.1 khả năng thu tín hiệu hoạt động ổn định hơn. Inbox hiển thị 4 sms gần nhất, còn lại tự động xóa và không ảnh hưởng tới cuộc sống.

Mục tiêu chính của thử nghiệm là tắt và bật giao diện trên hai bộ định tuyến trên cùng một mạng vật lý. Khó khăn chính là Mikrotik không hỗ trợ quản lý thông qua SNMP mà chỉ cho phép đọc các giá trị. Vì vậy, tôi đã phải đào theo hướng khác, cụ thể là API Mikrotik.

Không có tài liệu rõ ràng về cách kiểm soát nó, vì vậy tôi phải thử nghiệm và hướng dẫn này được đưa ra cho những lần thử sau này.

Để quản lý nhiều thiết bị, bạn sẽ cần một máy chủ WEB có thể truy cập và hoạt động trên mạng cục bộ; nó sẽ cần được điều khiển bằng các lệnh Mikrotik.

1. Trên Netmetal 5, bạn cần tạo một vài tập lệnh để bật và tắt tương ứng

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. Tạo 2 script trên web server (đương nhiên phải cài php trên hệ thống trong trường hợp này):

<?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. Tải xuống routeros_api.class.php từ diễn đàn Mikrotik và đặt nó vào một thư mục có thể truy cập được trên máy chủ.

Thay vì sfp-sfpplus16 bạn cần chỉ định tên của giao diện sẽ bị tắt/bật.

Bây giờ, khi gửi tin nhắn tới một số có dạng

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

NETMETAL sẽ khởi chạy tập lệnh tương ứng, tập lệnh này sẽ thực thi lệnh trên máy chủ WEB.

Tốc độ hoạt động khi nhận SMS là một phần của giây. Hoạt động ổn định.

Ngoài ra, còn có chức năng gửi SMS đến điện thoại bằng hệ thống giám sát Zabbix và mở kết nối Internet dự phòng nếu hệ thống quang học bị lỗi. Có lẽ điều này nằm ngoài phạm vi của bài viết này, nhưng tôi sẽ nói ngay rằng khi gửi SMS, độ dài của chúng phải vừa với kích thước tiêu chuẩn của một tin nhắn, bởi vì... Mikrotik không chia chúng thành nhiều phần và khi có tin nhắn dài đến thì đơn giản là nó không gửi được, ngoài ra, bạn cần lọc các ký tự được truyền trong tin nhắn, nếu không SMS sẽ không được gửi.

Nguồn: www.habr.com

Thêm một lời nhận xét