Alertes par SMS en Bash (via Google Calendar)
La remontée d’alerte par SMS (“Short Message Service”) est un plus non négligeable dans le monitoring de systèmes d’informations critiques.
Les services gratuits permettant d’utiliser les SMS depuis le système restent rare.
Depuis plusieurs années déjà, “Google Agenda” propose à ses clients des rappels de rendez-vous par SMS.
Rapidement, ce service Google fût détourné pour être utilisé comme source de remontée d’alertes (exemple : “SmsAlert : Envoyer des SMS gratuitement depuis ses serveurs” sur le site Macsim’s Mind qui utilisait le script PHP d’ Alexander Skakunov pour remonter des alertes par SMS).
Bien que très efficaces, la plupart de ces détournement sont implémentés en PHP qui n’est pas installé sur tous les serveurs.
L’idée de cet article et d’utiliser la même technique mais implémentée en BASH.
Principe de fonctionnement
Le principe est de créer un événement dans un agenda Google Calendar débutant dans 5 minutes et X secondes et d’avertir l’administrateur par SMS 5 minutes avant le début de l’événement. Le SMS sera donc envoyé après X secondes.
L’objectif du script “googalert” (disponible sur sourceforge) est de n’utiliser que des commandes classiques du shell, de pouvoir choisir l’agenda dans lesquels seront stockés les alertes et d’être parfaitement conforme à l’API Google(http://www.udel.edu/CIS/software/dist/google/calendar/java.client/gdata/doc/calendar.htmlvoir Add an event).
Mise en place
Préparer Google Calendar
Puisque le script ajoute des événements dans un agenda Google, il faut disposer d’un compte “Google Calendar”. Si vous n’avez pas de comptes de ce type, rendez vous sur la page d’accès au service d’agenda (http://www.google.com/calendar) et inscrivez vous (bouton “INSCRIPTION” en haut à droite).
Une fois connecté, à l’agenda, créer un nouvel agenda :
Lui donner un nom et (pourquoi pas) une description avant de valider par “Créer l’agenda” :
Puisqu’il s’agit de recevoir des notifications par SMS, la notion de numéro de téléphone semble inévitable … Si vous n’avez pas encore fourni cette information à Google, vous pourrez y accéder via le menu “Rappels et notifications” du nouvel agenda :
En bas de page vous trouverez un joli lien vous permettant de fournir le précieux renseignement :
Enfin, activer la notification par SMS des événements pour terminer la configuration :
Récupérer les informations Google Calendar
Si vous ne souhaitez pas utiliser l’agenda par défaut pour consigner les alertes, récupérez l’ID de l’agenda ciblé dans les “Paramètres de l’agenda” :
Dans la section “Adresse URL de l’agenda” copier la valeur de l’ID (ici ef00qo0reirlsncva3qo7vgb10@group.calendar.google.com) :
Mise en place du script “googalert”
Télécharger le script “googalert” sur sourceforge (http://sourceforge.net/projects/googalert/) et l’extraire :
fhh@mafalda ~ $ mkdir alertbysms && cd !$ mkdir alertbysms && cd alertbysms fhh@mafalda ~/alertbysms $ wget -q http://downloads.sourceforge.net/project/googalert/googalert-0.1.tar.bz2 fhh@mafalda ~/alertbysms $ tar xvf googalert-0.1.tar.bz2 googalert-0.1/ googalert-0.1/googalert fhh@mafalda ~/alertbysms $ cd googalert-0.1
Sans arguments, le script retourne un menu d’aide.
CRÉER UN FICHIER DE CONFIGURATION
L’option “-g” génère un typon de fichier de configuration.
fhh@mafalda ~/alertbysms/googalert-0.1 $ ./googalert -g > googalert.conf
Éditez le fichier généré pour y renseigner vos identifiants, l’ID de l’agenda dans lequel vous souhaitez ajouter vos modifications, etc :
fhh@mafalda ~/alertbysms/googalert-0.1 $ grep '^[[:blank:]]*[[:alpha:]]' googalert.conf AGENDA="ef00qo0reirlsncva3qo7vgb10@group.calendar.google.com" ; LOGIN="fhh@gmail.com" ; PASSWORD="mot_de_passe_gmail" ;
Une fois le fichier de configuration renseigné, vous pouvez soit le déplacer à la racine de votre compte en le faisant précéder par un “.” (exemple : mv googalert.conf ~/.googalert.conf) soit le placer dans “/etc/googalert.conf” si vous êtes administrateur de la machine, soit utiliser l’option “-c” du script.
Quelque soit votre choix pensez à adapter les droits sur le fichier !!!
fhh@mafalda ~/alertbysms/googalert-0.1 $ chmod 600 googalert.conf
Note : Vous pouvez préciser les logins mots de passe et agenda à utiliser directement depuis la ligne de commande via les options “-l”, “-p” et “-a”.
UTILISATION DU SCRIPT
A minima, vous devez préciser au script un texte pour l’événement à ajouter dans votre agenda, mais le champ le plus intéressant est le titre de l’événement car il sera repris dans le SMS d’alerte que vous recevrez :
fhh@mafalda ~/alertbysms/googalert-0.1 $ ./googalert -c googalert.conf "Titre de l'évènement" "Texte de l'alerte consignée dans l'agenda..." fhh@mafalda ~/alertbysms/googalert-0.1 $ echo $? 0
Note : l’option “-v” détaille les différentes actions effectuées par le script.
L’événement est alors ajouté à l’agenda désiré :
et dans les 30 secondes suivant l’insertion, vous recevrez une notification par SMS :
sms de : 36665" date="1355743717554" type="1" body="Rappel : Titre de l'évènement - lun. 17 déc. 12:33 - 12:43 lieu?: mafalda (Alertes)"
Par défaut, le script retourne une alerte dans les 30 secondes suivant l’ajout de l’événement à l’agenda. Cette valeur peut être modifiée via l’option “-t”.
Limites du script
Le script utilisant un service web gratuit, sa fiabilité est liée à différents facteurs tels que :
- la synchronisation du temps : la machine émettant les alertes doit être parfaitement à l’heure sous peine d’ajouter des événements dans le passé ou trop loin dans le futur (ce qui n’a plus d’intérêt) ;
- l’accès au web : la remontée d’alertes passe par l’accès à une application web. Si l’accès internet de la machine est coupé, il devient impossible d’accéder au service Google calendar et les notifications tombent dans le néant …
- la fiabilité de Google Calendar : Google Calendar est un service gratuit dont la fiabilité n’est pas absolue…
Malgré tout, le script fournis un sympathique complément aux systèmes traditionnels de remontées d’alertes