Доброго всем дня!
На этот раз решил описать ситуацию, которая вроде бы и не особо описана в интернете, хотя некоторые намеки на нее есть, но большая часть досталась просто долгим методичным копанием кода и вики самого Mikrotik.
Собственно задача: реализовать при помощи SMS управлением несколькими устройствами, на примере включения и выключения портов.
Имеется:
- Второстепенный маршрутизатор CRS317-1G-16S+
- Точка доступа Mikrotik NETMETAL 5
- LTE модем R11e-LTE
Начнем с того что чудесная точка доступа Netmetal 5 имеет на борту распаянный разъем для сим карты и порт для установки LTE модема. Потому для этой точки был куплен по сути лучший модем из того, что было доступно и поддерживалось операционной системой самой точки, а именно R11e-LTE. Точка была разобрана, все установлено на свои места (хотя надо знать, что сим карта расположена под модемом и без снятия основной платы ее не возможно достать), потому проверьте сим карту на работоспособность, иначе придется несколько раз разбирать точку доступа.
Далее просверлили пару отверстий в корпусе, установили 2 пигтейла и концы закрепили на модеме. К сожалению фото процесса не сохранилось. С другой стороны на пигтейлы закрепили универсальные антенны с магнитным основанием.
Основные этапы настройки описаны в интернете достаточно хорошо, кроме мелких косяков взаимодействия. Например модем перестает принимать сообщения SMS, когда из поступает 5 штук и они висят в Inbox, очистка сообщений, перезапуск модема не всегда решают проблему. Но в версии 6.44.1 прием работает более стабильно. В Inbox отображается 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. Скачать с форума Mikrotik routeros_api.class.php и расположить его в доступном каталоге на сервере.
вместо sfp-sfpplus16 нужно указать имя отключаемого/включаемого интерфейса.
Теперь при отправке сообщения на номер в виде
:cmd СЕКРЕТНЫЙКОД script enableiface
или
:cmd СЕКРЕТНЫЙКОД script disableiface
NETMETAL будет запускать соответствующий скрипт, а тот в свою очередь выполнение команды на WEB сервере.
Скорость выполнения операций при получении смс доли секунды. Работает стабильно.
Помимо этого есть функционал отправки СМС на телефоны системой мониторинга Zabbix и открытие резервного выхода в интернет при падении оптики. Пожалуй это выходи за рамки этой статьи, но скажу сразу, при отправке смс их длина должна укладываться в стандартный размер одного сообщения, т.к. Mikrotik не делит их на части, а при поступлении длинного сообщения просто его не отправляет, кроме того нужно фильтровать знаки передаваемые в сообщения, в противном случае СМС не отправится.
Источник: habr.com