Mikrotik. Gestion par SMS via serveur WEB

Bonne journée à tous!

Cette fois, j'ai décidé de décrire une situation qui ne semble pas être particulièrement décrite sur Internet, bien qu'il y ait quelques indices à ce sujet, mais l'essentiel n'était qu'une longue fouille méthodique du code et du wiki de Mikrotik lui-même.

La tâche réelle : mettre en œuvre le contrôle de plusieurs appareils via SMS, en utilisant l'exemple de l'activation et de la désactivation des ports.

Il y a:

  1. Routeur secondaire CRS317-1G-16S+
  2. Point d'accès Mikrotik NETMETAL 5
  3. Modem LTE R11e-LTE

Commençons par le fait que le merveilleux point d'accès Netmetal 5 intègre un connecteur de carte SIM soudé et un port pour installer un modem LTE. Par conséquent, pour ce point, le meilleur modem a été acheté parmi ce qui était disponible et pris en charge par le système d'exploitation du point lui-même, à savoir R11e-LTE. Le point d'accès a été démonté, tout a été installé à sa place (même s'il faut savoir que la carte SIM se trouve sous le modem et qu'il n'est pas possible de l'obtenir sans retirer la carte principale), vérifiez donc la fonctionnalité de la carte SIM, sinon vous devrez démonter le point d'accès plusieurs fois.

Ensuite, nous avons percé quelques trous dans le boîtier, installé 2 tresses et fixé les extrémités au modem. Malheureusement, aucune photo du processus n'a survécu. D'autre part, des antennes universelles à base magnétique étaient fixées aux tresses.

Les principales étapes de configuration sont assez bien décrites sur Internet, à l'exception de lacunes mineures en matière d'interaction. Par exemple, le modem cesse de recevoir des messages SMS lorsque 5 d'entre eux arrivent et ils restent bloqués dans la boîte de réception ; l'effacement des messages et le redémarrage du modem ne résolvent pas toujours le problème. Mais dans la version 6.44.1, la réception fonctionne de manière plus stable. La boîte de réception affiche les 4 derniers sms, le reste est automatiquement effacé et ne gêne pas la vie.

L'objectif principal de l'expérience est d'éteindre et d'allumer les interfaces de deux routeurs sur le même réseau physique. La principale difficulté était que Mikrotik ne prend pas en charge la gestion via SNMP, mais permet uniquement la lecture des valeurs. J'ai donc dû creuser dans l'autre sens, à savoir l'API Mikrotik.

Il n'y a pas de documentation claire sur la façon de le contrôler, j'ai donc dû expérimenter et cette instruction a été rédigée pour de futures tentatives.

Pour gérer plusieurs appareils, vous aurez besoin d'un serveur WEB accessible et fonctionnel sur le réseau local ; il devra être contrôlé à l'aide des commandes Mikrotik.

1. Sur Netmetal 5, vous devez créer quelques scripts pour l'activer et le désactiver, respectivement

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. Créez 2 scripts sur le serveur web (bien sûr, php doit être installé sur le système dans ce cas) :

<?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. Téléchargez routeros_api.class.php depuis le forum Mikrotik et placez-le dans un répertoire accessible sur le serveur.

Au lieu de sfp-sfpplus16, vous devez spécifier le nom de l'interface à désactiver/activer.

Désormais, lors de l'envoi d'un message à un numéro sous la forme

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

NETMETAL lancera le script correspondant, qui à son tour exécutera la commande sur le serveur WEB.

La vitesse des opérations lors de la réception de SMS est d'une fraction de seconde. Fonctionne de manière stable.

De plus, il existe une fonctionnalité permettant d'envoyer des SMS aux téléphones via le système de surveillance Zabbix et d'ouvrir une connexion Internet de secours en cas de panne de l'optique. Cela dépasse peut-être le cadre de cet article, mais je dirai tout de suite que lors de l'envoi de SMS, leur longueur doit correspondre à la taille standard d'un message, car... Mikrotik ne les divise pas en parties, et lorsqu'un long message arrive, il ne l'envoie tout simplement pas, de plus, vous devez filtrer les caractères transmis dans les messages, sinon le SMS ne sera pas envoyé.

Source: habr.com

Ajouter un commentaire