Dzień dobry wszystkim!
Tym razem postanowiłem opisać sytuację, która wydaje się być niezbyt dobrze opisana w internecie, choć są pewne jej symptomatyczne wskazania, ale większość pochodzi po prostu z długiego, metodycznego grzebania w kodzie i wiki samego Mikrotika.
Zadanie: zrealizować zarządzanie kilkoma urządzeniami za pomocą SMS, na przykład włączanie i wyłączanie portów.
Mamy:
- Drugorzędny router CRS317-1G-16S+
- Punkt dostępu Mikrotik NETMETAL 5
- Modem LTE R11e-LTE
Zacznijmy od tego, że wspaniały punkt dostępu Netmetal 5 ma na pokładzie lutowany gniazdo na kartę SIM oraz port do montażu modemu LTE. Dlatego dla tego punktu zakupiono zasadniczo najlepszy modem dostępny i wspierany przez system operacyjny samego punktu, a mianowicie R11e-LTE. Punkt został rozebrany, wszystko zamontowane na swoich miejscach (choć warto wiedzieć, że karta SIM znajduje się pod modemem i jej wydobycie bez zdjęcia głównej płyty jest niemożliwe), więc sprawdź kartę SIM pod kątem sprawności, w przeciwnym razie będzie trzeba kilka razy rozbierać punkt dostępu.
Następnie wywierciliśmy kilka otworów w obudowie, zainstalowaliśmy 2 pigtail'e i końce zamocowaliśmy na modemie. Niestety zdjęcia z tego procesu się nie zachowały. Z drugiej strony do pigtail'i przymocowaliśmy uniwersalne anteny z magnetyczną podstawą.
Podstawowe etapy konfiguracji są dość dobrze opisane w internecie, poza drobnymi błędami w interakcji. Na przykład modem przestaje odbierać wiadomości SMS, gdy przychodzi 5 sztuk i wisi w Inbox, a czyszczenie wiadomości, restart modemu nie zawsze rozwiązuje problem. Jednak w wersji 6.44.1 odbiór działa bardziej stabilnie. W Inbox wyświetlane są 4 ostatnie SMS-y, pozostałe są automatycznie usuwane i nie przeszkadzają w życiu.
Głównym celem eksperymentu jest wyłączanie i włączanie interfejsów na dwóch routerach w jednej fizycznej sieci. Główną trudnością było to, że Mikrotik nie obsługuje zarządzania przez SNMP, a pozwala tylko odczytywać wartości. Dlatego musiałem poszukać w innym kierunku, a mianowicie Mikrotik API.
Nie ma jasnej dokumentacji dotyczącej zarządzania, dlatego trzeba było eksperymentować i dla przyszłych prób stworzono tę instrukcję.
Aby zarządzać kilkoma urządzeniami, potrzebny będzie dostępny i funkcjonujący serwer WEB w lokalnej sieci, który będzie miał za zadanie zarządzanie za pomocą poleceń Mikrotik.
1. Na Netmetal 5 trzeba stworzyć kilka skryptów do włączania i wyłączania odpowiednio
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. Stwórz 2 skrypty na stronie internetowej serwerze (oczywiście w systemie w tym przypadku powinien być zainstalowany php):
debug=true;
if ($API->connect('IP zarządzanego Mikrotika', 'login administratora', 'hasło administratora')) {
$API->comm("\/interface\/ethernet\/enable", array(
"numbers"=>"sfp-sfpplus16",));
}
$API->disconnect();
?>
debug=true;
if ($API->connect('IP zarządzanego Mikrotika', 'login administratora', 'hasło administratora')) {
$API->comm("\/interface\/ethernet\/disable", array(
"numbers"=>"sfp-sfpplus16",));
}
$API->disconnect();
?>
3. Pobierz z forum Mikrotik routeros_api.class.php i umieść go w dostępnej katalogu na serwerze.
zamiast sfp-sfpplus16 trzeba podać nazwę wyłączanego/włączanego interfejsu.
Teraz przy wysyłaniu wiadomości na numer w postaci
:cmd SEKRETNYKOD script enableiface
lub
:cmd SEKRETNYKOD script disableiface
NETMETAL uruchomi odpowiedni skrypt, a ten wykonana polecenia na serwerze WEB.
Szybkość realizacji operacji przy odbiorze sms to ułamek sekundy. Działa stabilnie.
Oprócz tego istnieje funkcja wysyłania SMS na telefony przez system monitorowania Zabbix i otwierania zapasowego wyjścia do internetu w przypadku awarii światłowodu. To może wykraczać poza ramy tego artykułu, ale od razu powiem, że przy wysyłaniu sms długość ich treści powinna mieścić się w standardowym rozmiarze jednej wiadomości, ponieważ Mikrotik nie dzieli ich na części, a w przypadku długiej wiadomości po prostu jej nie wysyła. Ponadto trzeba filtrować znaki przesyłane w wiadomościach, w przeciwnym razie SMS nie zostanie wysłany.
Źródło: habr.com
