[Shell] Problème avec Crontab et scripts
Résolu
Jacks3006
-
Jacks3006 -
Jacks3006 -
Bonjour à tous,
Je suis en train de mettre en place un projet pour une entreprise et j'ai un léger souci avec Crontab (quoi que je suis pas sûr que ca vienne de lui), je vous explique :
Le but principal est de télécharger un fichier de configuration d'un serveur pour configurer d'autres serveurs. En gros, les étapes sont :
- Téléchargement du fichier "config_new.xml"
- Déplace le fichier dans le bon endroit de l'arbo (/root/configurateur/ pour des raisons de sécurité)
- Avec la commande "diff", vérifie entre les deux fichiers s'il y a des différences (avec "-q" en paramètre pour la commande, ensuite je "grep -c" le mot "differ" et je stocke le résultat dans une variable)
- Si ma variable vaut 1, alors je "rm config.xml" et je "mv config_new.xml config.xml", sinon je "rm config_new.xml"
Lorsque je regarde le log de mon script, je remarque qu'il ne voit jamais de changements. J'ai essayé alors de séparer en deux scripts, un lancé par Crontab qui lance le script de mise à jour, mais rien n'y fait ..
HELP je suis perdu, des idées?
Merci d'avance !
Jacks3006
Je suis en train de mettre en place un projet pour une entreprise et j'ai un léger souci avec Crontab (quoi que je suis pas sûr que ca vienne de lui), je vous explique :
Le but principal est de télécharger un fichier de configuration d'un serveur pour configurer d'autres serveurs. En gros, les étapes sont :
- Téléchargement du fichier "config_new.xml"
- Déplace le fichier dans le bon endroit de l'arbo (/root/configurateur/ pour des raisons de sécurité)
- Avec la commande "diff", vérifie entre les deux fichiers s'il y a des différences (avec "-q" en paramètre pour la commande, ensuite je "grep -c" le mot "differ" et je stocke le résultat dans une variable)
- Si ma variable vaut 1, alors je "rm config.xml" et je "mv config_new.xml config.xml", sinon je "rm config_new.xml"
Lorsque je regarde le log de mon script, je remarque qu'il ne voit jamais de changements. J'ai essayé alors de séparer en deux scripts, un lancé par Crontab qui lance le script de mise à jour, mais rien n'y fait ..
HELP je suis perdu, des idées?
Merci d'avance !
Jacks3006
A voir également:
- [Shell] Problème avec Crontab et scripts
- Classic shell - Télécharger - Personnalisation
- Microsoft activation scripts (mas) - Accueil - Windows
- Ssh secure shell download - Télécharger - Divers Web & Internet
- Shell startup windows 10 - Guide
- Crontab toutes les 2 heures ✓ - Forum Shell
2 réponses
salut
plus simple, utilise
plus simple, utilise
if cmp -s config_new.xml config.xml; then mv config_new.xml config.xml; else rm config.xml; fien ayant d'abord vérifier que les deux fichiers existent, bien sûr.
Hello,
En effet, je ne pense pas que ton problème vient de "crontab", mais plutot de ta commande grep.
Personnelement j'utiliserai une commande md5 pour comparer les 2 fichiers, mais cela devait aussi aller avec grep...
Mets des "echos" dans ton scripts et afin de voir d'ou vient exactement le problème.
En effet, je ne pense pas que ton problème vient de "crontab", mais plutot de ta commande grep.
Personnelement j'utiliserai une commande md5 pour comparer les 2 fichiers, mais cela devait aussi aller avec grep...
Mets des "echos" dans ton scripts et afin de voir d'ou vient exactement le problème.
Attends, peut être que si tu vois mon script, tu comprendras mieux mon problème, vu que des echos sont déjà mis en place :
change=""
'wget -q http://mon.url/getconfig.php'
'mv getconfig.php config_new.xml'
change='diff -q config.xml config_new.xml | grep -c differ'
if [ $change = 0 ]
then
echo "Launched the 'date' => No changes" >> /var/log/listener.log"
'rm config_new.xml'
else
echo "Launched the 'date' => Changes => Launch configurator.sh" >> /var/log/listener.log"
'rm config.xml'
'mv config_new.xml config.xml'
fi
A mon avis, le script n'est pas très complexe et parle de lui même. Il était lancé par Crontab, mais j'ai fait un autre script, lancé par Crontab qui lance celui ci
change=""
'wget -q http://mon.url/getconfig.php'
'mv getconfig.php config_new.xml'
change='diff -q config.xml config_new.xml | grep -c differ'
if [ $change = 0 ]
then
echo "Launched the 'date' => No changes" >> /var/log/listener.log"
'rm config_new.xml'
else
echo "Launched the 'date' => Changes => Launch configurator.sh" >> /var/log/listener.log"
'rm config.xml'
'mv config_new.xml config.xml'
fi
A mon avis, le script n'est pas très complexe et parle de lui même. Il était lancé par Crontab, mais j'ai fait un autre script, lancé par Crontab qui lance celui ci
Alors le truc, c'est qu'avec la commande cmp -s, je n'ai aucune sortie pour me dire si c'est différent ou pas. Il ne faudrait donc pas utiliser ce paramètre, ou alors il agit comme une valeur booléene dans un "if"? Si c'est le cas, ca me facilite grandement la tache effectivement :)
Je suis obligé de "grep" le mot "differ" dans le résultat du cmp sans le paramètre -s .. C'est bizarre.
Est ce que j'aurais fait quelque chose de faux? Sinon je continue comme je faisais, après tout c'est pas la commande qui ne jouait pas, c'est lorsque le script est lancé par Crontab que ca ne joue plus ..
Merci pour ton aide !
Il faut examiner le code retour ($?) et comparer sa valeur, 0 = true, 1 = false.
En tout cas merci à tous, je vais éditer tout ca et voir si Crontab fait moins ch*** maintenant :P