Bonjour,
Voilà, j'ai fait un script chargé de mettre à jour la base de données d'un Squidguard avec une liste récupérée sur Internet par wget.
L'ennui, est que le script fonctionne TRES BIEN manuellement, mais quand je le fais lancer par Cron à une heure fixe, rien ne fonctionne comme prévu.
On dirait que Cron est incapable d'aller au bout d'un script. J'ai mis des echo vers fichier partout pour définir où il s'arrête (je ne connais pas d'autres méthodes), ce qui a permis de voir qu'il refuse d'executer les commandes de fin, qui fonctionnent pourtant très bien en manuel...
Ceci, après un bon laps de temps (10mn), pour être certain que toutes les opérations soient faites (vu que la reconstruction prend du temps)
Le plus surprenant est la méthode de contournement. J'ai réalisé qu'exporter les messages de situation d'une commande (1> 2> ) sur /dev/null ou un fichier, forçait Cron à lancer les commandes qu'il n'avait pas envie de faire
Ma question sera donc simple :
C'est quoi ce binz ? Je suis devenu fou ? J'ai oublié quelque chose ?
Je met une copie du script à tout hasard ici. C'est une version sans echo mais avec le contournement.
Code :
- #!/bin/bash
- chemintravail="/root"
- emplacementdb="/usr/share/squidGuard-1.2.0/db"
- httpblacklist="ftp://ftp.univ-tlse1.fr/pub/reseau/cache/squidguard_contrib/blacklists.tar.gz"
- nameblacklist="blacklists.tar.gz"
- utilisateurdb="squid"
- # Stopper le serveur histoire de...
- /etc/init.d/squid stop
- # Téléchargement de la blacklist Toulouse
- wget $httpblacklist -P $chemintravail/
- if [ $? -ne 0 ]; then
- echo "`date` : Le serveur de la blacklist n'a pas répondu à temps" >> /root/squidguard.log
- /etc/init.d/squid start
- exit
- fi
- # Effacement de l'ancienne base
- rm -Rf $emplacementdb/blacklists
- # Décompression du fichier
- tar -xzf $chemintravail/$nameblacklist -C $emplacementdb
- if [ $? -ne 0 ]; then
- echo "`date` : La décompression de la blacklist a échoué pour une raison inconnue" >> /root/squidguard.log
- exit
- fi
- # Effacement du fichier pour éviter les doublons que fabrique wget
- rm -f $chemintravail/$nameblacklist
- # Reconstruction de la base de SquidGuard avec la nouvelle blacklist
- /usr/bin/squidGuard -c /etc/squid/squidGuard.conf -C all -d $emplacementdb &> /dev/null
- if [ $? -ne 0 ]; then
- echo "`date` : La recompilation de la base de squidGuard a échoué" >> /root/squidguard.log
- exit
- fi
- # Règlage des droits de /db/ en récursif pour Squid
- chown -R $utilisateurdb:$utilisateurdb $emplacementdb
- # Redémarrage du serveur Squid
- /etc/init.d/squid start &> /dev/null
- # Indication dans un fichier externe que la procédure est finie
- echo "`date` : La base de SquidGuard à été mise à jour" >> /root/squidguard.log
|