Alertes SMS avec sms gateway ultimate pour android

Une des étapes de mon projet de micro-datacenter dans un coffret 7U est d’assembler une passerelle SMS qui pourrait être utilisée pour toutes sortes de choses, notamment me remonter par SMS certaines alertes émises par zabbix, l’outil de supervision que j’utilise.

Dédier un abonnement GSM pour une passerelle SMS chez un particulier peut sembler un peu luxueux, mais je profite du fait qu’en tant qu’abonné free pour la connexion internet de mon domicile, je bénéficie gratuitement de l’abonnement mobile 2h d’appels / SMS illimités habituellement commercialisé à 2€ par free. Du coup, ça vaut le coup.

En attendant de choisir et d’assembler les éléments dont j’ai besoin pour bâtir ma passerelle, j’ai choisi de recycler mon vieux smartphone (un nexus 4) en lui installant une appli faisant passerelle IP/SMS : sms gateway ultimate.

Il existe de nombreuses applications passerelles SMS, j’ai choisi celle-ci car je ne souhaitais pas faire du mail to SMS (bien qu’elle sache aussi faire ça). En effet, elle propose une API web permettant de passer le numéro de téléphone et le message en HTTP par la méthode GET.

A partir de là, il est aisé de faire un petit script qui sera invoqué par zabbix lorsqu’une métrique aura atteint un seuil qu’on aura défini comme suffisant pour déclencher une alerte. On configurera zabbix pour qu’il invoque le script en lui passant en paramètre le numéro de téléphone, ainsi que le texte de l’alerte à envoyer.

#!/bin/bash

# envoie un SMS par l'intermediaire de SMS gateway sur android

TO=$1
MESSAGE=$2
GWIP="ip_de_lappli_sms_gateway"
GWPORT="46433"

URL="http://$GWIP:$GWPORT/send.html"
PARAMS="?smsto=$TO&smsbody=$MESSAGE&smstype=sms"
PARAMS=$(echo "$PARAMS" | sed 's/ /%20/g' | sed 's/:/%3A/g')

curl -s -G "$URL$PARAMS" > /dev/null

Les paramètres passés au script sont stockés dans $TO et $MESSAGE. $GWIP contient l’adresse IP ou le nom de l’appareil faisant tourner la passerelle SMS. $GWPORT contient le port sur lequel écoute l’API de SMS gateway ultimate, j’ai laissé le port par défaut.

Tout ça est concaténé dans $PARAMS qui est ensuite rendue webisable, car elle sera transmise en GET.

Côté zabbix, le script est déposé dans le répertoire dédié au stockage des scripts d’alerte maison (dans mon cas c’est /usr/lib/zabbix/alertscripts). Ensuite, il faut ajouter un type de média (sémantique zabbix) dans « Administration -> Media types ».

ajout media type
Configuration d’un média d’alerte de type script dans zabbix.

Enfin il ne reste plus qu’à l’attribuer à au moins un utilisateur déclaré dans zabbix (« Administration -> Users » puis onglet « Media » de l’utilisateur concerné), en lui indiquant à partir de quel niveau de gravité d’un évènement ce média sera invoqué.

assignation media type
Assignation de média d’alerte à un utilisateur dans zabbix.
medias type d'un utilisateur
Liste des médias d’alerte pour un utilisateur dans zabbix.

Bon, du coup j’ai une passerelle SMS connectée à mon réseau local en wifi. C’est gentil, mais je sais déjà que je n’aurai pas d’alertes SMS la nuit car je coupe le wifi à cette période…D’un autre côté je lis très mal les SMS quand je dors.

Bien sûr c’est une solution qui se veut temporaire, en attendant que je m’assemble une passerelle SMS un peu plus costaude; je n’ai pas encore arrêté mes choix cependant il est probable que ça se finisse avec un nano ordinateur et une carte d’extension GSM.

o/

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *