Bulles de notification pour les logs sous GNOME

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

Vus : 916
Publié par Zanko : 16