
Un serveur perso c'est bien, un serveur auto hébergé c'est très bien, mais un serveur auto hébergé qui a planté, c'est nul ! L'inconvénient du plantage système est qu'il ne prévient pas, du coup la durée d'indisponibilité peut être longue si l'on ne s'en rend pas compte.
Pour pallier à ce problème, j'ai fait un petit retour vers OVH. Mon compte n'ayant pas été clôturé après la migration du nom de domaine, j'en ai profité pour acheter un pack SMS. Pour environ 10€ TTC, j'ai 100 SMS que je peux envoyer via le web. Ce petit script bash permet de me notifier lorsque le serveur tombe. Bien sûr, il faut pouvoir l'exécuter sur un PC connecté h24...
L'idée est de faire un HEAD sur la favicon de mon blog (qui n'existe pas et qui n'apparaît pas dans les log). La requête est exécutée toutes les 10 minutes. Au bout de 3 échecs successifs (pour éviter les problèmes de changement d'IP), un SMS est envoyé et le script quitte.
#!/bin/bash
BASE_URL="https://www.ovh.com/cgi-bin/sms/http2sms.cgi"
ACCOUNT="sms-sgXXXXX-1"
LOGIN="BBBBBB"
PASSWORD="YYYYYYYY"
FROM="SOUTADE"
TO="%2B33666ZZZZZZ" #+33666ZZZZZZ
MESSAGE="Cybelle%20is%20down" # Cybelle is down
MAX_TRIES=3
TARGET="http://blog.soutade.fr/favicon.ico"
request="$BASE_URL?account=$ACCOUNT&login=$LOGIN&password=$PASSWORD&from=$FROM&to=$TO&message=$MESSAGE&noStop=1"
#echo $request
tries=$MAX_TRIES
while [ 1 ] ; do
HEAD $TARGET | grep "404" >/dev/null
# Found
if [ $? -eq 0 ] ; then
# Reset counter
if [ ! $tries -eq $MAX_TRIES ] ; then
tries=$MAX_TRIES
fi
else
# Fail
tries=`expr $tries - 1`
fi
# No more tries, send notification and exit
if [ $tries -eq 0 ] ; then
GET "$request"
break
fi
sleep 10m
done
PS : Pour utiliser le script, il faut créer un nouvel utilisateur et ajouter un expéditeur depuis l'interface OVH. Attention, les champs doivent être encodés sous la forme URL (voir la partie "encode" de http://soutade.fr/urlunshortener)