====== 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: * Ouverture de session d'un utilisateur. * Fermeture de session d'un utilisateur. * Échec d'ouverture de session (mauvais mot de passe) 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//): #!/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: {{ :linux:linux-sms.png?direct&400 |}} **Notes:** * Cela fonctionne aussi bien avec l'ouverture de sessions graphique (mdm/lightdm) que pour un ''su'' dans un terminal. * Je fais ''utilisateur1|utilisateur2|utilisateur3|utilisateur4'' car je ne veux surveiller que les évènements pour ces utilisateurs. * Vous devrez sans doute adapter les expressions régulières dans les lignes ''reg_...'' en fonction de votre système. * J'ai mis en dur le nom de la machine (''Asus:'') * Vous devrez remplacer **''UTILISATEUR''** et **''MOTDEPASSE''** par vos propres identifiants SMS API FreeMobile. Notez qu'il ne s'agit **pas** des identifiants utilisés pour vous connecter sur votre compte mobile. Il s'agit d'identifiants séparés: * Connectez-vous sur votre [[https://mobile.free.fr/moncompte/|espace abonné FreeMobile]] * Allez dans //Gérer mon compte// > //Mes options// * Activez l'option //Notification par SMS//. * Le petit "i" gris vous donne les détails (notemment utilisateur et mot de passe): | {{ :linux:linux-sms-free-1.png |}} | {{:linux:linux-sms-free-2.png |}} | * L'API SMS FreeMobile est gratuite et fonctionne sur tous les forfaits FreeMobile. Elle ne peut servir qu'à vous envoyer un SMS à vous-même, pas à d'autres personnes. * Le même genre de chose aurait pu être réalisé en modifiant la configuration de pam afin qu'il exécute le script sur certains événements d'authentification. L'avantage du script ci-dessus est qu'il peut être étendu à d'autres logs/événements que l'authentification. * J'aurais pu utiliser cron, mais je voulais du temps réel. Pour envoyer un SMS en php: