#!/bin/sh set -ex GIT_DIR=/usr/scripts/surveillance/mac_prises/output/ SCRIPT=/usr/scripts/surveillance/mac_prises/mac_prise.py # Nombre de changements de mac sur une prise avant mail WARNING=2 MAILTO=nobody@crans.org if ! [ -d $GIT_DIR ]; then echo -n "Création du répertoire \`$GIT_DIR'..." mkdir $GIT_DIR echo " Fait." fi cd $GIT_DIR if ! [ -d $GIT_DIR/.git ]; then git init fi # Récupération de la liste des switchs SWITCHS=$(/usr/bin/host -l adm.crans.org | /usr/bin/awk '/^bat[abcghijpm]-/{print $1}') # Nettoyage du contenu du répertoire, avec ignore-unmatch pour éviter le plantage en # cas de répertoire vide. /usr/bin/git rm -r -q --ignore-unmatch ./* # Lancement du listage des macs en parallèle /usr/bin/parallel -j 1000 python $SCRIPT -- $SWITCHS # Ajout de tous les fichiers (à faire avant le diff, pour que les nouveaux fichiers soient pris en compte) /usr/bin/git add * # Récupération de statistiques # numstat renvoie le nombre de lignes ajoutées, le nombre de lignes supprimées et le nom du fichier # on ajoute les deux premières variables et on classe par nombre de modifs /usr/bin/git diff --cached --numstat | /usr/bin/awk '{print $1+$2 " " $3}' | sort -rn | ( while read num file; do if [ $num -ge $WARNING ]; then echo $file else break fi done ) | xargs /usr/bin/git diff --cached | mail -a 'From: "Eye in the sky" ' -s "Surveillance macs/prises" $MAILTO /usr/bin/git commit -m "Updated mac list" > /dev/null # Garbage collection toutes les 10 minutes if [ $(expr $(date +%M) % 10) -eq 0 ]; then /usr/bin/git gc --aggressive -q fi