
Ignore-this: a97c9dd382aae257e5d64b3fc14d0469 darcs-hash:20121211191448-b6762-f8705ea02bdfe778cd81d98ee52f2fa2533d68e0.gz
54 lines
1.6 KiB
Bash
Executable file
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
|