Envoi d'un SMS lors de certains événements dans les logs

Je me sers de ce script pour "fliquer" un peu l'utilisation de ma machine personnelle qui est sous Linux. Je reçois donc un SMS quand l'un des événements suivants se produit:

C'est assez simple: On surveille le fichier /var/log/auth.log et quand certains événements sont détectés, on appelle l'API SMS FreeMobile.

Bien sûr ce script est facilement adaptable pour envoyer un SMS lors de l'apparition d'évènements de votre choix dans les logs.

Il est nécessaire d'avoir un abonnement mobile Free (Peu importe le forfait, cette option est disponible dans tous les forfaits Free Mobile).

Le script ci-dessous est vite bricolé, avec certaines choses codées en dur. Vous devrez sans doute l'adapter.

Je met le script suivant dans /opt/scripts/logs-sms.sh (sans oublier de faire mon chmod +x):

logs-sms.sh
#!/bin/bash
# Surveillance des logs, et envoi d'un SMS quand un utilisateur se connecte ou déconnecte.
 
logger "SMS: Démarrage script SMS connexions."
 
envoie_sms () {
   chaine="Asus: `date +%Y-%m-%d_%Hh%M` $*"
   logger "SMS: $chaine"
   curl -G -d user=UTILISATEUR -d pass=MOTDEPASSE --data-urlencode msg="$chaine" 'https://smsapi.free-mobile.fr/sendmsg'
}
 
# Expressions régulières pour détecter certains évènements (ouverture session, fermeture session, mauvais mot de passe)
reg_open="pam_unix.*session opened for user (utilisateur1|utilisateur2|utilisateur3|utilisateur4)"
reg_close="pam_unix.*session closed for user (utilisateur1|utilisateur2|utilisateur3|utilisateur4)"
reg_failure="pam_unix.*authentication failure.*user=(.+)"
 
tail -fn0 /var/log/auth.log | \
while read line ; do
   if [[ $line =~ $reg_open ]] ; then
       envoie_sms "Ouverture session ${BASH_REMATCH[1]}"
   fi
   if [[ $line =~ $reg_close ]] ; then
       envoie_sms "Fermeture session ${BASH_REMATCH[1]}"
   fi
   if [[ $line =~ $reg_failure ]] ; then
       envoie_sms "Mauvais mot de passe utilisateur ${BASH_REMATCH[1]}"
   fi
done

Puis j'ai ajouté le crontab afin qu'il soit lancé à chaque démarrage de la machine (sudo crontab -e):

@reboot nohup /bin/bash /opt/scripts/logs-sms.sh > /dev/null 2>&1 &

Et voilà le genre de SMS que je reçois:

Notes:

Pour envoyer un SMS en php:

<?php
file_get_contents("https://smsapi.free-mobile.fr/sendmsg?user=UTILISATEUR&pass=MOTDEPASSE&msg=".urlencode("Voici mon message"));
?>