Bonjour.
J'ai repris un vieux script ce matin, et j'ai facilité sa modification ainsi que sa gestion des erreurs.
edit:1ere maj
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.Code:
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"
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.