Simplifier la création de logs en bash

Voici un petit billet que j’aurai pu intituler : Je découvre la roue.

Je cherchais tout bêtement une meilleurs solution pour gérer la créations de logs lié a l’exécution de mes scripts. Prenons par exemple un script qui change les droits de la partition /usr et qui désactive l’USB. La problématique est simple : je veux voir à l’écran l’exécution du script mais aussi tout conserver en log.

Jusqu’à présent je faisais quelque chose dans ce gout là :

#!/bin/bash

LOG=/var/log/secuFS.log

echo -n « Passage de /usr en ro » | tee -a $LOG

mount -o remount, ro /usr | tee -a $LOG

echo -n « Désactivation de l’USB » | tee -a $LOG

modprobe -r usb-storage | tee -a $LOG

exit 1

Burk que c’est moche, chaque ligne doit être paramétrée avec | tee -a $LOG. J’entend d’ici mes petits camarades dev se moquer de moi, en me traitant de mangeur de chips. Maintenant si je m’arrète 30 seconde pour réfléchir je pourrais faire quelque chose dans ce gout là :

#!/bin/bash

LOG=/var/log/secuFS.log

(

echo -n « Passage de /usr en ro »

mount -o remount, ro /usr

echo -n « Désactivation de l’USB »

modprobe -r USB

) 2>&1 | tee -a $LOG

exit 1

J’ai gagné en lisibilité, en taille, et je suis sur de ne rien oublier et ça avec seulement 2 parenthèses.