Il est bien pratique d'être informé de ce qui se passe sur son système dans notre dos. Pour ça, on a les logs, mais on n'a pas forcément envie de passer son temps à les lire, surtout sur une machine de bureau. On peut vouloir recevoir des alertes par mail, mais c'est un peu lourd, encore une fois surtout sur une machine de bureau. De plus il existe certaines informations qui nous intéressent seulement au moment où elles se produisent, donc dont on veut être informé immédiatement et dont on se fiche après. Voici donc un petit script qui affiche en temps réel les infos de certains logs (surveillés via inotify, donc compatible uniquement avec Linux) sous forme de bulle d'information, avec une zoulie icône et tout.
Note : merci à Prometee et à Jérémie pour leurs corrections (voir commentaires).
Avant de pouvoir lancer le script, il vous faut installer inotify-tools ainsi que libnotify-bin (qui ont peut-être un autre nom pour votre distrib).
# Show notifications when watched logs are modified
# Logs to watch, add/remove those you want
#logs="$logs /var/log/syslog"
logs="$logs /var/log/kern.log"
logs="$logs /var/log/auth.log"
#logs="$logs /var/log/mail.log"
#logs="$logs /var/log/mail.info"
#logs="$logs /var/log/mail.warn"
#logs="$logs /var/log/mail.err"
#logs="$logs /var/log/apache2/access.log"
#logs="$logs /var/log/apache2/error.log"
#logs="$logs /var/log/fail2ban.log"
while [ 1 ]
do
log_modified=`inotifywait -e modify $logs --format %w`
notification=`tail -n 1 $log_modified`
if [[ $notification != '' ]]; then
message_type=info
[ `echo $log_modified | grep warn` ] &&
message_type=warning
[ `echo $log_modified | grep err` ] &&
message_type=error
[ `echo $log_modified | grep auth` ] ||
[ `echo $log_modified | grep access` ] ||
[ `echo $log_modified | grep fail2ban` ] &&
message_type=security
case $message_type in
info)
urgency=low
icon=dialog-information
popup_time=5000
;;
warning)
urgency=normal
icon=dialog-warning
popup_time=5000
;;
error)
urgency=critical
icon=dialog-error
popup_time=10000
;;
security)
urgency=critical
icon=security-high
popup_time=10000
;;
esac
notify-send -u $urgency -t $popup_time -i $icon "$log_modified" "$notification"
sleep 0.1
fi
done
Adaptez ce code à vos besoins pour recevoir plus ou moins d'infos (sachant que c'est vite soulant en fait quand y'en a trop
).
Pour lancer le script au démarrage de la session, rendez le exécutable et allez dans Préférences > Sessions pour demander son lancement à l'ouverture de la session GNOME.
Et le résultat :













J'ai un peu modifier ton script pour qu'il soit un poil plus apte à fonctionner correctement
Les changements sont aux lignes :
)
- l.4 : info.png n'existe pas chez moi, le fichier s'appelle "gtk-dialog-info.png"
- affectation d'autre fichiers de logs (ça c'est au cas où ça donnerais des idées
- l.18 : la variable sera affecter du chemin complet vers le fichier qui a été modifié
- l.19 : prise en compte des changement sur la ligne précédente
- l.22 : "envariablement" c'est ti pas beau ce nouveau mot
Voici le script en espérant que ça serv à quelqu'un :
#!/usr/bin/env bash
#Popup Time
pptime=3000
#Ampoule
infoimg="/usr/share/icons/gnome/32x32/status/gtk-dialog-info.png"
logs='/var/log/kern.log '
logs="$logs /var/log/syslog"
logs="$logs /var/log/apache2/access.log"
logs="$logs /var/log/apache2/error.log"
logs="$logs /var/log/auth.log"
logs="$logs /var/log/mail.info"
logs="$logs /var/log/mail.warn"
logs="$logs /var/log/mail.err"
while [ 1 ]
do
logModify=`inotifywait -e modify $logs --format %w`
notify=`tail -n 1 $logModify`
if [[ $notify!='' ]]; then
notify-send -t $pptime -i $infoimg "System information" "$notify"
fi
done
Un autre paquet doit être ajouté : libnotify-bin
J'allais oublier ...
Merci pour le script
SAlut
sais tu s'il est possible (surement en fait) d'afficher le même type de log dans un terminal ?
j'ai toujours un terminal ouvert intégré au bureau (tilda), et j'aimerai avoir ce défilé d'activité
traaf si tu regarde 2 minutes le script tu trouvera la réponse à ta question...
indice un petit changement sur les dernières lignes devrait suffire (cf: man echo)
Salut! J'ai modifié ton script pour ajouter des couleurs aux notifications. C'est conçu pour awesome wm. Merci pour l'idée, que j'ai trouvée assez géniale!
La modif se trouve ici : http://awesome.naquadah.org/wiki/index.php?title=Dbus%2C_naughty_and_logs
Content de voir que ça sert !
Je profite que tu sois un user d'awesome pour te poser la question : faut-il vraiment apprendre Lua pour le configurer ?
Pas vraiment... Disons que si tu demandes de l'aide sur irc, les gens t'en voudront un peu si tu n'as pas du tout regardé comment ça marche. Après, tu as un fichier de configuration de base qui t'es donné, donc des exemples sous les yeux au moment où tu veux faire une modif. Avec ça, tu peux deviner la majeure partie des trucs.
En gros, tu as ton rc.lua qui est un fichier de configuration en un peu plus évolué, assez simple et avec lequel tu peux tout faire. Tout dépend de ton expérience générale des langages de programmation, mais pour quelqu'un de pas trop bête qui a lu du code en un ou deux langages, ça peut se faire en extrapolant ce qui t'es déjà fourni.
merci! ton idée est géniale!!
Poster un nouveau commentaire