Mikrotik. Bediening via SMS met behulp van WEB-server

Goedendag iedereen!

Deze keer besloot ik een situatie te beschrijven die niet bijzonder beschreven lijkt te worden op internet, hoewel er enkele hints over zijn, maar het meeste was slechts een langdurig methodisch uitgraven van de code en de wiki van Mikrotik zelf.

De eigenlijke taak: het implementeren van de besturing van verschillende apparaten met behulp van SMS, waarbij we het voorbeeld gebruiken van het in- en uitschakelen van poorten.

Verkrijgbaar:

  1. Secundaire router CRS317-1G-16S+
  2. Mikrotik NETMETAL 5 toegangspunt
  3. LTE-modem R11e-LTE

Laten we beginnen met het feit dat het prachtige Netmetal 5-toegangspunt een gesoldeerde SIM-kaartconnector aan boord heeft en een poort voor het installeren van een LTE-modem. Daarom werd voor dit punt in wezen de beste modem gekocht van wat beschikbaar was en ondersteund werd door het besturingssysteem van het punt zelf, namelijk R11e-LTE. Het toegangspunt werd gedemonteerd, alles werd op zijn plaats geïnstalleerd (hoewel je moet weten dat de simkaart zich onder de modem bevindt en het niet mogelijk is om deze te krijgen zonder het moederbord te verwijderen), dus controleer de simkaart op functionaliteit, anders moet u het access point meerdere keren demonteren.

Vervolgens hebben we een paar gaten in de behuizing geboord, 2 pigtails geïnstalleerd en de uiteinden aan de modem vastgemaakt. Helaas zijn er geen foto's van het proces bewaard gebleven. Aan de andere kant werden universele antennes met een magnetische basis aan de pigtails bevestigd.

De belangrijkste installatiestappen worden vrij goed beschreven op internet, afgezien van kleine hiaten in de interactie. Zo stopt het modem met het ontvangen van SMS-berichten als er 5 binnenkomen en blijven ze in de Inbox hangen; berichten wissen en het modem opnieuw opstarten lossen het probleem niet altijd op. Maar in versie 6.44.1 werkt de ontvangst stabieler. Inbox geeft de laatste 4 sms'jes weer, de rest wordt automatisch gewist en interfereert niet met het leven.

Het belangrijkste doel van het experiment is om interfaces op twee routers op hetzelfde fysieke netwerk in en uit te schakelen. De grootste moeilijkheid was dat Mikrotik geen beheer via SNMP ondersteunt, maar alleen het lezen van waarden toestaat. Daarom moest ik in de andere richting graven, namelijk de Mikrotik API.

Er is geen duidelijke documentatie over hoe je het kunt besturen, dus ik moest experimenteren en deze instructie is gemaakt voor toekomstige pogingen.

Om meerdere apparaten te beheren heeft u een toegankelijke en werkende WEB-server op het lokale netwerk nodig; deze moet worden bestuurd met behulp van Mikrotik-opdrachten.

1. Op Netmetal 5 moet je een aantal scripts maken om het respectievelijk aan en uit te zetten

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. Maak 2 scripts op de webserver (in dit geval moet uiteraard php op het systeem geïnstalleerd zijn):

<?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. Download routeros_api.class.php van het Mikrotik-forum en plaats het in een toegankelijke map op de server.

In plaats van sfp-sfpplus16 moet u de naam opgeven van de interface die moet worden uitgeschakeld/ingeschakeld.

Nu, wanneer u een bericht verzendt naar een nummer in het formulier

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

NETMETAL zal het bijbehorende script starten, dat op zijn beurt de opdracht op de WEB-server zal uitvoeren.

De snelheid van handelingen bij het ontvangen van sms is een fractie van een seconde. Werkt stabiel.

Daarnaast is er functionaliteit voor het verzenden van sms-berichten naar telefoons via het Zabbix-monitoringsysteem en het openen van een back-up-internetverbinding als de optiek uitvalt. Misschien valt dit buiten het bestek van dit artikel, maar ik zal meteen zeggen dat bij het verzenden van sms-berichten de lengte ervan binnen de standaardgrootte van één bericht moet passen, omdat... Mikrotik verdeelt ze niet in delen, en wanneer een lang bericht binnenkomt, wordt het eenvoudigweg niet verzonden. Bovendien moet u de tekens filteren die in de berichten worden verzonden, anders wordt de sms niet verzonden.

Bron: www.habr.com

Voeg een reactie