Dzień dobry wszystkim!
Tym razem postanowiłem opisać sytuację, która nie wydaje się być szczególnie opisana w Internecie, choć są na ten temat pewne wskazówki, ale większość z nich to było po prostu długie, metodyczne szperanie w kodzie i wiki samego Mikrotika.
Rzeczywiste zadanie: zaimplementować sterowanie kilkoma urządzeniami za pomocą wiadomości SMS na przykładzie włączania i wyłączania portów.
Do dyspozycji:
- Drugi router CRS317-1G-16S+
- Punkt dostępowy Mikrotik NETMETAL 5
- Modem LTE R11e-LTE
Zacznijmy od tego, że wspaniały punkt dostępowy Netmetal 5 ma na pokładzie wlutowane złącze karty SIM oraz port do instalacji modemu LTE. Dlatego w tym punkcie zakupiono zasadniczo najlepszy modem z tego, co było dostępne i obsługiwane przez system operacyjny samego punktu, a mianowicie R11e-LTE. Access point został rozebrany, wszystko zostało zainstalowane na swoim miejscu (choć trzeba wiedzieć, że karta SIM znajduje się pod modemem i nie da się jej wyjąć bez wyjmowania płyty głównej), więc sprawdź działanie karty SIM, w przeciwnym razie będziesz musiał kilkakrotnie zdemontować punkt dostępu.
Następnie wywierciliśmy kilka otworów w obudowie, zamontowaliśmy 2 pigtaile i przymocowaliśmy końce do modemu. Niestety nie zachowały się żadne zdjęcia z procesu. Natomiast do pigtaili przymocowano uniwersalne anteny z podstawą magnetyczną.
Główne etapy konfiguracji są dość dobrze opisane w Internecie, z wyjątkiem drobnych luk w interakcjach. Na przykład modem przestaje odbierać wiadomości SMS, gdy nadejdzie 5 z nich i zawisną w skrzynce odbiorczej; usunięcie wiadomości i ponowne uruchomienie modemu nie zawsze rozwiązuje problem. Ale w wersji 6.44.1 odbiór działa stabilniej. Skrzynka odbiorcza wyświetla ostatnie 4 SMS-y, pozostałe są automatycznie kasowane i nie zakłócają życia.
Głównym celem eksperymentu jest wyłączenie i włączenie interfejsów na dwóch routerach w tej samej sieci fizycznej. Główną trudnością było to, że Mikrotik nie obsługuje zarządzania poprzez SNMP, a jedynie umożliwia odczyt wartości. Dlatego musiałem kopać w innym kierunku, a mianowicie w API Mikrotika.
Nie ma jasnej dokumentacji, jak to kontrolować, więc musiałem poeksperymentować i ta instrukcja została sporządzona na potrzeby przyszłych prób.
Aby zarządzać wieloma urządzeniami, będziesz potrzebować dostępnego i działającego serwera WWW w sieci lokalnej, który będzie musiał być kontrolowany za pomocą poleceń Mikrotika.
1. W Netmetal 5 musisz utworzyć kilka skryptów, aby odpowiednio je włączyć i wyłączyć
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. Utwórz 2 skrypty na serwerze WWW (oczywiście w tym przypadku w systemie musi być zainstalowany 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. Pobierz routeros_api.class.php z forum Mikrotik i umieść go w dostępnym katalogu na serwerze.
Zamiast sfp-sfpplus16 musisz podać nazwę interfejsu, który ma zostać wyłączony/włączony.
Teraz podczas wysyłania wiadomości na numer w formularzu
:cmd СЕКРЕТНЫЙКОД script enableiface
или
:cmd СЕКРЕТНЫЙКОД script disableiface
NETMETAL uruchomi odpowiedni skrypt, który z kolei wykona polecenie na serwerze WWW.
Szybkość operacji przy odbiorze SMS-a to ułamek sekundy. Działa stabilnie.
Dodatkowo istnieje możliwość wysyłania SMS-ów na telefony przez system monitorowania Zabbix i otwierania zapasowego połączenia internetowego w przypadku awarii optyki. Być może wykracza to poza zakres tego artykułu, ale od razu powiem, że wysyłając SMS-y, ich długość powinna mieścić się w standardowym rozmiarze jednej wiadomości, ponieważ... Mikrotik nie dzieli ich na części, a gdy przyjdzie długa wiadomość, po prostu jej nie wysyła, dodatkowo trzeba filtrować znaki przesyłane w wiadomościach, inaczej SMS nie zostanie wysłany.
Źródło: www.habr.com