Bulles de notification pour les logs sous GNOME

Portrait de Zanko
Version imprimablePDF version

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 Happy).

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 :
Image

Portrait de Prometee

J'ai un peu modifier ton script pour qu'il soit un poil plus apte à fonctionner correctement Eye-wink

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 Happy)
- 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 Happy

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

Portrait de Jérémie

Un autre paquet doit être ajouté : libnotify-bin Happy

Portrait de Jérémie

J'allais oublier ...
Merci pour le script Evil

Portrait de traaf

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é Happy

Portrait de prometee

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)

Portrait de Christophe-Marie

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

Portrait de Zanko

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 ?

Portrait de Christophe-Marie

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.

Portrait de  reserve de credit

merci! ton idée est géniale!!

Poster un nouveau commentaire

Le contenu de ce champ ne sera pas montré publiquement.
  • Balises HTML autorisées : <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.
  • You can enable syntax highlighting of source code with the following tags: .
  • Les smileys textuels seront remplacés par des smileys graphiques.

Plus d'informations sur les options de formatage