Si vous utilisez le service ntfy.sh ou sa version auto-hébergée, nous allons voir comment configurer des scripts sur RouterOS afin de faire remonter des messages à son smartphone.
Nous allons prendre l’exemple d’un routeur Mikrotik qui travaille un peu dans son coin et configurer ntfy pour nous informer qu’une mise à jour RouterOS est disponible. Dans un second temps, nous allons aussi nous informer qu’un SMS nous est parvenu sur l’interface LTE de notre routeur et l’envoyer sur ntfy.
Même s’il est possible de se faire notifier par mail à partir de RouterOS, nous allons complètement court-circuiter les serveurs mails, ce qui économisera de la bande passante, du stockage dans un datacentre, esquiver la surveillance de la NSA, le ciblage publicitaire des GAFAM et sauver le monde en un après-midi. Procédons par étapes.
Etape #1 : Configurer les scripts sur RouterOS v7
Il faudra bien mettre à jour RouterOS vers v7 avant de démarrer en allant dans : Système/Package/Update

Nous allons réutiliser les scripts de eworm sur github pour rajouter ce qu’il faut au routeur. Deux choix cornéliens s’offrent à nous :
- La méthode « beau gosse » avec une ligne de commande à exécuter, ou
- La méthode « longue » mais plus explicative et graduelle à exécuter ligne par ligne.
Etape #2 : Rajouter le script pour ntfy
Pour rajouter le script de notification, il suffit de lancer :
$ScriptInstallUpdate mod/notification-ntfy;
On vérifie que cela est bien pris en compte dans l’interface :

Et pour paramétrer ntfy :
/system/script/edit global-config-overlay source;
Dans ce fichier, nous allons rajouter les paramètres de notre serveur ntfy, et ctrl+o pour sauvegarder :
:global NtfyServer ":<token>@<serveur ntfy sans le https>";
:global NtfyTopic "<mon_topic>";
Et, pour que RouterOS prenne en compte ces paramètres :
/system/script/run global-config;
Sans tarder, nous allons tester directement les notifications avec ceci :
$SendNtfy "Subject..." "Body...";
Et, presto, message reçu :

Etape #3 : Rajouter le service de notification des mises à jour
Le script suivant à rajouter sous RouterOS détecte les mises à jour :
$ScriptInstallUpdate check-routeros-update;
Et pour que cela s’exécute tous les jours, nous allons rajouter un intervalle ainsi :
/system/scheduler/add interval=1d name=check-routeros-update on-event="/system/script/run check-routeros-
update;" start-time=startup;
Etape #4 : Rajouter le service de transfert des SMS
Si vous avez un routeur équipé d’une interface LTE, vous pouvez l’utiliser avec une carte SIM lambda. Cependant, les SMS ne seront reçus que par RouterOS et ne remonteront pas plus loin. Là encore, un script peut envoyer les SMS directement à votre service ntfy – plutôt pratique pour les codes d’authentification et autres messages systèmes.
Nous allons déjà activer la réception de SMS dans Router OS en allant dans : Tools\SMS

Pour tester, nous pouvons envoyer un SMS au numéro de la carte SIM et vérifier le « Inbox » si le message est bien reçu :

Il ne reste plus qu’à rajouter le service qui va bien afin d’envoyer ce texto à ntfy :
$ScriptInstallUpdate sms-forward;
On va aussi demander au scheduler d’exécuter ce script toutes les 2 minutes :
/system/scheduler/add interval=2m name=sms-forward on-event="/system/script/run sms-forward;" start-time=
startup;
Et c’est fait !
Pour tester, il suffit de renvoyer un SMS à la carte SIM sur RouterOS et patienter une petite minute. On vérifie sur son téléphone ou le Web App ntfy :

Conclusion
Et voilà pour ces deux cas d’utilisation de ntfy afin de faire remonter des informations de machines un peu oubliées dans une infrastructure. Ntfy arrive à donner une voix à tout le monde, et rien que pour cela, je dis vive le droit à la parole des machines !
Bonne bidouille, et à bientôt.