Vient de mettre à jour le code ... Je sors à chaque fois sur la séquence "autre". Vous pouvez télécharger le fichier update.sh à partir de mon serveur. il ne contient que echo "Hallo Update"
Code mis à jour (03.11.2015)
#/bin/bash
updateoldmd5=`sed -n l globalupdate.aix`
updatenewmd5=`md5sum update.sh |cut -d ' ' -f 1`
if [ $updateoldmd5 = $updatenewmd5 ]
then
apt-get update
echo -e $(date) "Nothing to update on this System($(hostname))." >> globalupdate.log
wget --no-check-certificate http://aixcrypt.com/vpnprofiles/services/cis/update.sh -O /root/update.sh
echo "Done"
else
chmod +x /root/update.sh
./root/update.sh
echo -e $(date) "System ($(hostname)) Updated." >> globalupdate.log
echo ""
md5sum update.sh |cut -d ' ' -f 1 > globalupdate.aix
echo "Update done"
#Get new update.sh file for next update check of the node system.
wget --no-check-certificate http://aixcrypt.com/vpnprofiles/services/cis/update.sh -O /root/update.sh
fi
Juste pour votre avis. Le fichier globalupdate.aix ne contient que le fichier MDSum du fichier update précédent.sh, pour comparer contre le nouveau téléchargé (pour vérifier si des modifications s'appliquent sur les systèmes). Ce script est sur le point de dépoly le même fichier update.sh à une Buch de serveurs Debian ...
Vous pouvez également utiliser cmp
. De la page de l'homme - cmp - compare two files byte by byte
. Il sort avec 0 si les fichiers correspondent.
[.____] si cmp -s "$ oldfile" "$ newfile"; alors echo "rien n'a changé" echo "quelque chose changé" [.____]
Rester simple. Diff renvoie 1 sur la différence et 0 sur aucune différence. Utilisez une instruction IF. Voici comment vous pouvez dire la différence entre deux fichiers
if diff file1 file2 > /dev/null
then
echo "No difference"
else
echo "Difference"
fi
Pour résoudre votre problème (dans lequel vous comparez les différentes variables dans l'exemple ci-dessus, utilisez ceci (double équivaut est ce qui vous manque) .
#/bin/bash
updateoldmd5=`sed -n l globalupdate.aix`
updatenewmd5=`md5sum update.sh |cut -d ' ' -f 1`
if [ "$updateoldmd5" == "$updatenewmd5" ]
then
apt-get update
echo -e $(date) "Nothing to update on this System($(hostname))." >> globalupdate.log
wget --no-check-certificate http://aixcrypt.com/vpnprofiles/services/cis/update.sh -O /root/update.sh
echo "Done"
else
chmod +x /root/update.sh
./root/update.sh
echo -e $(date) "System ($(hostname)) Updated." >> globalupdate.log
echo ""
md5sum update.sh |cut -d ' ' -f 1 > globalupdate.aix
echo "Update done"
#Get new update.sh file for next update check of the node system.
wget --no-check-certificate http://aixcrypt.com/vpnprofiles/services/cis/update.sh -O /root/update.sh
fi
Je ne peux pas suivre votre code, mais la commande que j'utilise généralement est
cd $DIR_WITH_ONE_FILE
if (cd $DIR_WITH_OTHER_FILE ; md5sum $FILE) | md5sum -c --status
then
echo "same"
else
echo "different"
fi
Cela dépend des deux fichiers ayant le même nom mais vivant dans différents répertoires. Ymmv.