De retour avec un nouveau script, permettant de pouvoir tenir à jour vos blacklists de SquidGuard, en tenant compte des “urls” ou “domains” rajoutés.
Tout ceci planifié via une ligne crontab, et supervisé par Nagios en cas d’erreur (sonde passive).
Et, voici le script :
#!/bin/bash
#—————————————————————–
# Script de mise a jour des blacklists SquidGuard
#
# Auteur : Jerome
# Date : 18/02/2009
#—————————————————————–
url=$1##Configurations
dbDir=/var/lib/squidguard/db/blacklists ### repertoire de prod des blacklists
workDir=/tmp/squidGuard/ ### repertoire principal
archiveDir=/var/lib/squidguard/db/
squidUser=squid
squidGroup=squid## Declarations des repertoires de travail
newTmpDir=$workDir/new/ ### repertoire des nouvelles blacklists
oldTmpDir=$workDir/old/ ### repertoire des fichiers courant en prod
curTmpDir=$workDir/curr/ ### repertoire des fichiers a jour a mettre en proderrMsg=”"
#Declaration fonction
errNagios(){
### envoi CRTIcAL a nagios
###
logger -t maj_blacklists -p err “CRITICAL : $errMsg”
}### Menage
rm -rf $workDir#Creation repertoire de travail
mkdir $workDir#Copie des blacklistd de prod dans OLDTMPDIR
cp -pR $dbDir $oldTmpDir#copier les fichiers en prod dans CURTMPDIR
cp -pR $oldTmpDir $curTmpDir#Recuperation des nouvelles blacklists
cd $workDir
wget $url#Message Nagios si URL non joignable alors errNagios vaut 1
if [ $? -gt 0 ]
then
errMsg=”URL de la blacklist non joignable”
errNagios
exit
fi#Decompression des nouvelles blacklists et creation du repertoire new
tar xvzf blacklists.tar.gz
mv blacklists $newTmpDir#Message Nagios si deplacement KO
if [ $? -gt 0 ]
then
errMsg=”Deplacement des fichiers KO”
errNagios
exit
fi#Copie des fichiers manquants
cp -Ru $newTmpDir/* $curTmpDir#Concatenation entre OLD ET NEW blacklists vers CUR
cd $oldTmpDir
for i in $(find . -type f)
do
#Si le fichier est present dans NEWTMPDIR alors on merge
if [ -f $newTmpDir/$i ]
then
cat $oldTmpDir/$i $newTmpDir/$i | sort -u > $curTmpDir/$i
fi
done#Archivage des blacklists de prod actuelle
tar czf $archiveDir/blacklists_jmb.tar.gz $dbDir#Mettre en production les nouveaux fichiers present dans curTmpDir
cp -pRu $curTmpDir/* $dbDir
chown -R $squidUser.$squidGroup $dbDir
chmod -R 770 $dbDir#Update de la bdd des blacklists
/usr/bin/squidguard -C all#Message si erreur vers Nagios
if [ $? -gt 0 ]
then
errMsg=”Rechargement BDD SquidGuard a echoue”
errNagios
exit
fi#Recgargement de squid pour prise en comtpe
/etc/init.d/squid reload#Envoi message Nagios
if [ $? -gt 0 ]
then
errMsg=”Rechargement de Squid a echoue”
errNagios
exit
fi
Et voici ma ligne crontab pour exécuter le script à 2h00 tous les matins (en prenant les blacklists de l’Université de Toulouse) :
0 2 * * * sh /exploit/script/update_blacklists_squidguard.sh ftp://ftp.univ-tlse1.fr/pub/reseau/cache/squidguard_contrib/blacklists.tar.gz