Микротик. Управление чрез SMS чрез WEB сървър

Добър ден на всички!

Този път реших да опиша ситуация, която изглежда не е особено описана в интернет, въпреки че има някои намеци за нея, но в по-голямата си част беше просто дълго методично ровене на кода и wiki на самия Mikrotik.

Всъщност задачата е да се реализира с помощта на SMS управление на няколко устройства, като се използва примерът за включване и изключване на портове.

На разположение:

  1. Вторичен рутер CRS317-1G-16S+
  2. Точка за достъп Mikrotik NETMETAL 5
  3. LTE модем R11e-LTE

Да започнем с факта, че прекрасната точка за достъп Netmetal 5 има запоен слот за SIM карта и порт за инсталиране на LTE модем на борда. Следователно за тази точка всъщност беше закупен най-добрият модем от наличния и поддържан от операционната система на самата точка, а именно R11e-LTE. Точката беше разглобена, всичко беше инсталирано на мястото си (въпреки че трябва да знаете, че SIM картата се намира под модема и е невъзможно да я получите, без да премахнете основната платка), така че проверете SIM картата за работоспособност, в противен случай ще трябва да разглобите точката за достъп няколко пъти.

След това пробихме няколко дупки в кутията, монтирахме 2 пигтейла и фиксирахме краищата на модема. За съжаление снимката на процеса не е запазена. От друга страна, универсални антени с магнитна основа бяха фиксирани към пигтейлите.

Основните стъпки за настройка са описани доста добре в Интернет, с изключение на малките проблеми с взаимодействието. Например, модемът спира да получава SMS съобщения, когато се получат 5 съобщения и те висят във входящата кутия, изчистването на съобщенията, рестартирането на модема не винаги решава проблема. Но във версия 6.44.1 приемът работи по-стабилно. Последните 4 sms-а се показват във входящата кутия, останалите се изтриват автоматично и не пречат на живота.

Основната цел на експеримента е да се загасят и повишат интерфейсите на два рутера в една и съща физическа мрежа. Основната трудност беше, че Mikrotik не поддържа управление чрез SNMP, а позволява само четене на стойности. Затова се наложи да копая в другата посока, а именно Mikrotik API.

Няма ясна документация за това как да управлявам, така че трябваше да експериментирам и тази инструкция беше направена за бъдещи опити.

За да управлявате множество устройства, ще ви трябва наличен и работещ WEB сървър в локалната мрежа, той отговаря за управлението на командите на 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 ще изпълни съответния скрипт, който от своя страна ще изпълни командата на WEB сървъра.

Скоростта на операциите при получаване на SMS е част от секундата. Работи стабилно.

Освен това има функционалност за изпращане на SMS до телефони от системата за наблюдение Zabbix и отваряне на резервна интернет връзка, когато оптиката падне. Може би това е извън обхвата на тази статия, но веднага ще кажа, че при изпращане на SMS тяхната дължина трябва да се побере в стандартния размер на едно съобщение, защото. Mikrotik не ги разделя на части и когато пристигне дълго съобщение, той просто не го изпраща, освен това е необходимо да филтрирате символите, предавани в съобщения, в противен случай SMS няма да бъде изпратен.

Източник: www.habr.com

Добавяне на нов коментар