scripts/surveillance/mac_prises/mac_prise_wrapper.sh
Pierre-Elliott Bécue dfcda07054 On modifie un peu le plugin de dim pour handle les bonnes choses, on ajoute un tool python, et on met mac_prises dans le dépot.
Ignore-this: a97c9dd382aae257e5d64b3fc14d0469

darcs-hash:20121211191448-b6762-f8705ea02bdfe778cd81d98ee52f2fa2533d68e0.gz
2012-12-11 20:14:48 +01:00

54 lines
1.6 KiB
Bash
Executable file

#!/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" <root@crans.org>' -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