Bonjour.

J'ai repris un vieux script ce matin, et j'ai facilité sa modification ainsi que sa gestion des erreurs.

edit:1ere maj
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/bin/sh
# repertoire ou se trouve la base de donnees
destdir=/var/lib/squidguard
# repertoire des logs de squid
logdir=/var/log/squid
 
# fichier de log pour savoir si le telechargement s'est bien deroule
logfile=$logdir/updsgdb.log
 
# site ftp
ftp_url=ftp://ftp.univ-tlse1.fr/pub/reseau/cache/squidguard_contrib/
# fichier de blacklisting
blfile=blacklists.tar.gz
 
#fonction permettant la gestion d'erreurs
launch() {
        cmd=$1
        err=$2
 
        echo $cmd | tee -a $logfile && eval "$cmd >> $logfile 2>&1"
 
        if [ $? -ne 0 ]
                then
                echo "ERREUR : $err" | tee -a $logfile
                exit
        fi
}
 
# Chargement des BLACKLISTS
cd $destdir
# entete du fichier journal
echo ---------------------------------------- > $logfile
echo TELECHARGEMENT DES BLACKLISTS POUR SQUID >> $logfile
echo ---------------------------------------- >> $logfile
date >> $logfile
echo "fichier de log : $logfile"
 
 
#sauvegarde de l'ancienne blacklist
echo "#sauvegarde de l'ancienne blacklist"
if [ -f "$destdir/$blfile" ]
then
        launch "mv -v $destdir/$blfile $destdir/$blfile.bak" "sauvegarde de l'ancienne blacklist a echoue"
fi
 
#telechargement de la blacklist
echo "#telechargement de la blacklist"
launch "wget -N -P $destdir $ftp_url$blfile" "fichier ftp blacklists $blfile NON TROUVE"
 
# Decompression du fichier recupere
echo "# Decompression du fichier recupere"
launch "tar xvzf $destdir/$blfile -C $destdir/blacklists/" "repertoire blacklists INTROUVABLE"
# suppression de l'archive
echo "#suppression de l'archive"
launch "rm -v -f $destdir/$blfile" "la suppression a echoue"
 
# changement de proprietaire pour que squid puisse fonctionner
# on a maintenant besoin d'une liste
echo "# changement de proprietaire pour que squid puisse fonctionner"
launch "chown -R proxy:proxy $destdir/blacklists $destdir/db" "le changement de proprietaire a echoue"
 
# arret de squid
echo "#arret de squid"
launch "/etc/init.d/squid stop" "l'arret de squid a echoue"
echo $cmd && eval $cmd
 
# mise a jour de la base de donnees
echo "#mise a jour des bases squidguard"
launch "/usr/bin/squidGuard -C all" "la mise a jour de la bdd a echoue"
 
# redemarrage de squid
echo "#redemarrage de squid"
launch "/etc/init.d/squid start" "le redemarrage de squid a echoue"
Les messages d'erreur ne sont pas forcément très adaptés, je crois que je vais rajouter dedans le code retour renvoyé par l'outil utilisé en cas d'erreur.

Ce script est lancé dans la crontab, le double affichage avec les commentaires est volontaire. Il permet d'avoir un affichage causant dans le mail que je reçois lorsque le script est lancé.

La fonction launch me permet une gestion plutôt souple des erreurs.

Je ne cherche pas à me faire mousser parceque j'ai pondu un script de 20 lignes, mais plutôt de profiter de votre expérience

Que pourrais rajouter pour obtenir un code meilleur ?
Y a t il de possible failles dans ce script ?
J'aimerai également savoir s'il existe une variable permettant de connaître le nombre de paramètres envoyés à une fonction ? (je vais chercher dans la doc ksh de marcg ...)


Je suis prêt à entendre toutes les remarques.

Merci d'avance.