Bonne journée à tous!
Cette fois, j'ai décidé de décrire la situation, qui ne semble pas être particulièrement décrite sur Internet, bien qu'il y ait quelques indices à ce sujet, mais la plupart d'entre eux sont allés à une longue fouille méthodique du code et du wiki de Mikrotik lui-même.
En fait, la tâche: mettre en œuvre en utilisant le contrôle SMS de plusieurs appareils, sur l'exemple d'activer et de désactiver les ports.
Il y a:
- Routeur mineur CRS317-1G-16S +
- Point d'accès Mikrotik NETMETAL 5
- Modem LTE R11e-LTE
Pour commencer, le merveilleux point d'accès Netmetal 5 possède à bord un connecteur soudé pour une carte SIM et un port pour l'installation d'un modem LTE. Par conséquent, pour ce point, en fait, le meilleur modem a été acheté auprès de ce qui était disponible et pris en charge par le système d'exploitation du point lui-même, à savoir R11e-LTE. Le point a été démonté, tout a été mis en place (même si vous devez savoir que la carte SIM est située sous le modem et qu'il n'est pas possible de l'obtenir sans retirer la carte principale), vérifiez donc la carte SIM pour le fonctionnement, sinon vous devrez démonter le point d'accès plusieurs fois.
Ensuite, nous avons percé quelques trous dans le boîtier, installé 2 queues de cochon et fixé les extrémités au modem. Malheureusement, la photo du processus n'a pas été conservée. D'autre part, des antennes universelles à base magnétique ont été fixées aux nattes.
Les principales étapes de configuration sont assez bien décrites sur Internet, à l'exception des petits montants d'interaction. Par exemple, le modem cesse de recevoir des messages SMS lorsque 5 éléments proviennent et qu'ils se bloquent dans la boîte de réception, effaçant les messages, redémarrant le modem ne résout 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 la vie n'interfère pas.
Le principal objectif de l'expérience est d'éteindre et d'augmenter les interfaces sur deux routeurs dans un réseau physique. La principale difficulté était que Mikrotik ne prend pas en charge la gestion via SNMP, mais autorise 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 gérer, j'ai donc dû expérimenter et cette instruction a été faite pour de futures tentatives.
Pour gérer plusieurs appareils, vous avez besoin d'un serveur WEB accessible et fonctionnel sur le réseau local, il est nécessaire de le gérer à l'aide des commandes Mikrotik.
1. Sur Netmetal 5, vous devez créer quelques scripts pour activer et 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
<?php
3. Téléchargez depuis le forum Mikrotik routeros_api.class.php 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éconnectée / incluse.
Maintenant, lors de l'envoi d'un message à un numéro du formulaire
:cmd script enableiface :cmd script disableiface
NETMETAL exécutera le script correspondant, qui exécutera à son tour la commande sur le serveur WEB.
La vitesse des opérations lors de la réception de fractions de SMS d'une seconde. Cela fonctionne de manière stable.
De plus, il y a la fonctionnalité d'envoi de SMS vers les téléphones par le système de surveillance Zabbix et l'ouverture d'une connexion Internet de sauvegarde lorsque l'optique tombe. Cela dépasse peut-être la portée 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 envoyés aux messages, sinon les SMS ne seront pas envoyés.
PS Je complète maintenant les montants des versions précédentes de RouterOS et comment les gérer.
1. La longueur maximale du message et les caractères utilisés dans les messages sont limités, j'ai donc dû me battre au niveau de Zabbix, à savoir, pour corriger le modèle d'envoi de message, de sorte qu'en bref, il était clair de quoi il s'agissait.
Paramètres - Actions - Signaler à sms - Opérations - Objet: Problème: {HOST.NAME} {TRIGGER.NAME}
Et sur la récupération Rapport à sms - Opérations de récupération Objet: Résolu: {HOST.NAME} {TRIGGER.NAME}
2. En outre, le script lui-même, qui envoie des données au modem, réduit également la longueur maximale du message envoyé, car s'il est trop long, le message ne sera pas envoyé.
Script PHP envoyant des données
<?php require('/usr/lib/zabbix/alertscripts/routeros_api.class.php'); $API = new RouterosAPI(); $API->debug=true; if ($API->connect('IP ', ' ', ' ')) { $API->comm("/tool/sms/send", array( "port"=>"lte1", "phone-number"=>$argv[1], "message"=>$argv[2],)); } $API->disconnect(); echo $argv[1]; echo $argv[2]; ?>
3. Boîte de réception de nettoyage pour RouterOS <6,44
Système-sheduler
/system scheduler
add disabled=yes interval=1m name=removeSMS on-event="/system script run 7" \
policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \
start-date=nov/01/2018 start-time=19:32:00
Si le script ci-dessous, vous aurez un numéro de série différent, alors dans l'ordonnanceur, vous devrez remplacer le run 7 par le numéro correspondant
Script système
/system script
add dont-require-permissions=no name=removeSMS owner=admin policy=\
ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\
tool sms inbox remove 0\r\
\n/delay 1\r\
\n/tool sms inbox remove 0\r\
\n/delay 1\r\
\n/tool sms inbox remove 0\r\
\n/delay 1\r\
\n/tool sms inbox remove 0\r\
\n/delay 1\r\
\n/tool sms inbox remove 0\r\
\n/delay 1\r\
\n/tool sms inbox remove 0\r\
\n/delay 1\r\
\n/tool sms inbox remove 0\r\
\n/delay 1\r\
\n/tool sms inbox remove 0\r\
\n/delay 1\r\
\n"
Script avec numéro de série 7
4. Sur les versions inférieures à 6.38, il a également aidé à redémarrer le modem avec des scripts intégrés et un planificateur
/system script
add dont-require-permissions=no name=rebootLTE owner=admin policy=\
ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\
interface lte disable 0\r\
\ndelay 10\r\
\n/interface lte enable 0\r\
\n/tool sms set receive-enabled=false\r\
\ndelay 10\r\
\n/tool sms set receive-enabled=true\r\
\n"
5. Et un peu sur la reconstitution des équipes. Pour envoyer un SMS, il est permis de dire sur un hôte avec Zabbix de générer un fichier RSC, puis de l'envoyer à ftp sur Mikrotik avec un script, puis dans le modem lui-même, par le script dans le planificateur, d'exécuter le fichier requis, les commandes sont exécutées, mais il m'a semblé plus pratique d'utiliser le mécanisme ci-dessus.
Dans le cas d'un tel envoi, le code généré est assez simple.
/tool sms send lte1 +7926xxxxxxx message "Problem: High ICMP ping response time Problem started at 17:08:04 on 2018.07.10 Problem name: High ICMP ping response time Host: Netgear7212 Severity: Warning Original problem ID: 5403803"
Dans cet exemple, les caractères supplémentaires sont déjà supprimés et la longueur est illimitée. Le script qui traite le lancement selon cette méthode après avoir travaillé devrait copier un fichier RSC vide dans le fichier Mikrotik existant.
Je n'ai pas aimé cette méthode, car en principe il n'y a pas de protection contre les pépins et les messages non envoyés non contrôlés sont possibles.
Dans la version de RouterOS 6.44.1, les problèmes de débordement de ceux entrants ont déjà été éliminés, vous ne pouvez donc pas recourir aux méthodes de nettoyage de la ferme collective