La condition ne s'execute pas ???

Résolu
Bonjour,
j'ai un script de sauvegarde : que voici :
#!/bin/sh
# Script de sauvegarde
#merci de renseigner le fichier de conf: sauve.conf
#
#lecture des parametre de conf
#definition du chemin du fichier de conf
sauve_conf="/dossiers/scripts/sauve.conf"
sauvegarde_quotidien=$(cat $sauve_conf|grep "^sauvegarde_quotidien="|awk 'BEGIN {FS="="} {print $2}')
sauvegarde_hebdo=$(cat $sauve_conf|grep "^sauvegarde_hebdo="|awk 'BEGIN {FS="="} {print $2}')
ip_sauve_quotidien=$(cat $sauve_conf|grep "^ip_sauve_quotidien="|awk 'BEGIN {FS="="} {print $2}')
ip_sauve_hebdo=$(cat $sauve_conf|grep "^ip_sauve_hebdo="|awk 'BEGIN {FS="="} {print $2}')
nom_module_rsyn_conf_quotidien=$(cat $sauve_conf|grep "^nom_module_rsyn_conf_quotidien="|awk 'BEGIN {FS="="} {print $2}')
nom_module_rsyn_conf_hebdo=$(cat $sauve_conf|grep "^nom_module_rsyn_conf_hebdo="|awk 'BEGIN {FS="="} {print $2}')
#
#declaration du compte ADMIN
admin="root" 
#
#declaration du chemin du log RSYNC
rsync_log="/dossiers/scripts/rsync.log" 
#
#declaration du chemin du log general (compte_rendu)
compte_rendu_log="/dossiers/scripts/compte_rendu.log" 
#
#declaration de l'adresse mail d'envoie des log
adress_mail="root@linux.fr" 
#
#declaration de la date
date=$(date '+%A %d %B %H:%M:%S') 
#
#declaration du n° de jour de la semaine (5 pour vendredi)
dateV=$(date +%u)
#
#declaration du nom du serveur
servername=$(uname -n)
#
#declaration de la date type 06.11.2009
datehebdo=$(date +%x)
#
#declaration du jour de la semaine type vendredi
datejour=$(date +%A)
#
#initialisation du fichier de log
echo "Sauvegarde du serveur $servername" >$compte_rendu_log
echo "*************************************************************" >>$compte_rendu_log
echo >>$compte_rendu_log
# si sauvegarde_quotidien==oui
if [ $sauvegarde_quotidien = "oui" ]; then
	{
        echo "Sauvegarde Quotidienne" >>$compte_rendu_log
        echo $datejour >>$compte_rendu_log
		date >>$compte_rendu_log
		rsync -raqv /bureautique/dossiers $admin@$ip_sauve_quotidien::$nom_module_rsyn_conf_quotidien/`date +%A` >>$rsync_log
		#test les erreurs de Rsynsc
			if [ "$?" != 0 ]; then mail -s "[ERREUR] $servername $datejour" $adress_mail<$rsync_log; fi
		date >>$compte_rendu_log
		rsync -raqv /bureautique/scripts $admin@$ip_sauve_quotidien::$nom_module_rsyn_conf_quotidien/`date +%A` >>$rsync_log
			if [ "$?" != 0 ]; then mail -s "[ERREUR] $servername $datejour" $adress_mail<$rsync_log; fi
		rsync -raqv /bureautique/systeme $admin@$ip_sauve_quotidien::$nom_module_rsyn_conf_quotidien/`date +%A` >>$rsync_log
			if [ "$?" != 0 ]; then mail -s "[ERREUR] $servername $datejour" $adress_mail<$rsync_log; fi
		echo "____________________________________________" >>$compte_rendu_log
	}
fi
#
### si on est Vendredi, on sauvegarde sur le Hebdo
#
if [ $dateV = "5" ] && [ $sauvegarde_hebdo = "oui" ]; then
	{
        echo "Sauvegarde Hebdo" >>$compte_rendu_log
        echo $datejour >>$compte_rendu_log
        echo >>$compte_rendu_log
        echo "***$datejour]***" >$compte_rendu_log
        date >>$compte_rendu_log
        rsync -raqv /bureautique/dossiers $admin@$ip_sauve_hebdo::$nom_module_rsyn_conf_hebdo/"$datehebdo"_"$servername" >>$rsync_log
			if [ "$?" != 0 ]; then mail -s "[ERREUR] $servername $datejour" $adress_mail<$rsync_log; fi
        date >>$compte_rendu_log
        rsync -raqv /bureautique/scripts/*.log $admin@$ip_sauve_hebdo::$nom_module_rsyn_conf_hebdo/"$datehebdo"_"$servername" >>$rsync_log
			if [ "$?" != 0 ]; then mail -s "[ERREUR] $servername $datejour" $adress_mail<$rsync_log; fi
	echo "____________________________________________" >>$compte_rendu_log
	}
fi
#
# Espace disk
echo >>$compte_rendu_log
echo "Espace Disque "$(date '+%A %d %B %H:%M:%S')>>$compte_rendu_log
echo "*************************************************************" >>$compte_rendu_log
df -h >>$compte_rendu_log
#
#concatene le rsync.log au compte_rendu.log
echo >>$compte_rendu_log
echo "Rsync LOG" >>$compte_rendu_log
echo "____________________________________________" >>$compte_rendu_log
cat $rsync_log>>$compte_rendu_log
#
#envoi du mail à la BAL linux
mail -s "[$datejour] $servername" $adress_mail<$compte_rendu_log

via ce fichier de conf
#sauve.conf
#fichier de conf pour les sauvegarde du serveur
#
#MaJ 11/2009
#
[SAUVE]
sauvegarde_quotidien=oui
sauvegarde_hebdo=oui
ip_sauve_quotidien=1.2.3.4
ip_sauve_hebdo=1.2.3.3
nom_module_rsyn_conf_quotidien=appli
nom_module_rsyn_conf_hebdo=hebdo


Tout semble fonctionner sauf les conditions.
Je recois le mail mais aucun rsync ne s'effectue.
mon IF ne doit pas etre bon ???
Merci pour votre aide ;)
Configuration: Windows XP
Firefox 2.0.0.18

13 réponses

  1. ben rien !
    en fait la condition n'est pas respecté !
    si je met un ELSE, il execute le ELSE !!!
    1. Contributeur
      tu as essayé en mettant des parenthèses au lieu des crochets ?

      Essaye avec peu d'instructions dans ton if, juste un echo pour voir...
      1. Bonjour,
        le test suivant me renvoie "non" alors que cela devrait etre oui ???
        #!/bin/sh
        # Script de sauvegarde
        #merci de renseigner le fichier de conf: sauve.conf
        #
        #lecture des parametre de conf
        #definition du chemin du fichier de conf
        sauve_conf="/dossiers/scripts/sauve.conf"
        sauvegarde_quotidien=$(cat $sauve_conf|grep "^sauvegarde_quotidien="|awk 'BEGIN {FS="="} {print $2}')
        sauvegarde_hebdo=$(cat $sauve_conf|grep "^sauvegarde_hebdo="|awk 'BEGIN {FS="="} {print $2}')
        ip_sauve_quotidien=$(cat $sauve_conf|grep "^ip_sauve_quotidien="|awk 'BEGIN {FS="="} {print $2}')
        ip_sauve_hebdo=$(cat $sauve_conf|grep "^ip_sauve_hebdo="|awk 'BEGIN {FS="="} {print $2}')
        nom_module_rsyn_conf_quotidien=$(cat $sauve_conf|grep "^nom_module_rsyn_conf_quotidien="|awk 'BEGIN {FS="="} {print $2}')
        nom_module_rsyn_conf_hebdo=$(cat $sauve_conf|grep "^nom_module_rsyn_conf_hebdo="|awk 'BEGIN {FS="="} {print $2}')
        #
        #declaration du compte ADMIN
        admin="root" 
        #
        #declaration du chemin du log RSYNC
        rsync_log="/dossiers/scripts/rsync.log" 
        #
        #declaration du chemin du log general (compte_rendu)
        compte_rendu_log="/dossiers/scripts/compte_rendu.log" 
        #
        #declaration de l'adresse mail d'envoie des log
        adress_mail="root@linux.fr" 
        #
        #declaration de la date
        date=$(date '+%A %d %B %H:%M:%S') 
        #
        #declaration du n° de jour de la semaine (5 pour vendredi)
        dateV=$(date +%u)
        #
        #declaration du nom du serveur
        servername=$(uname -n)
        #
        #declaration de la date type 06.11.2009
        datehebdo=$(date +%x)
        #
        #declaration du jour de la semaine type vendredi
        datejour=$(date +%A)
        #
        #initialisation du fichier de log
        echo "Sauvegarde du serveur $servername" >$compte_rendu_log
        echo "*************************************************************" >>$compte_rendu_log
        echo >>$compte_rendu_log
        # si sauvegarde_quotidien==oui
        if [ $sauvegarde_quotidien = "oui" ]; then
        	{
        	echo oui
        	}
        else
        	{
        	echo non
        	}
        fi
        

        fichier de conf
        #sauve.conf
        #fichier de conf pour les sauvegarde du serveur
        #
        #MaJ 11/2009
        #
        [SAUVE]
        sauvegarde_quotidien=oui
        sauvegarde_hebdo=oui
        ip_sauve_quotidien=1.2.3.4
        ip_sauve_hebdo=1.2.3.3
        nom_module_rsyn_conf_quotidien=appli
        nom_module_rsyn_conf_hebdo=hebdo
        


        Merci pour votre aide ;)
        1. Modérateur
          Salut,

          Rajoute "set -xv" à ton script après le shebang :

          #!/bin/sh
          set -xv

          Exécute ton script et affiche le résultat ici s'il te plaît, merci.
          1. voici pour le test :
            + '[' $'oui\r' = oui ']'

            c'est quoi ce "/r" ? le retour chariot ?
            pourtant ecrit mon fichier de conf dans Vi !?

            Merci
            1. Modérateur
              Oui c'est un retour chariot ;-(

              Affiche :

              cat -A sauve.conf

          2. #sauve.conf^M$
            #fichier de conf pour les sauvegarde du serveur^M$
            #^M$
            #MaJ 11/2009^M$
            #^M$
            [SAUVE]^M$
            sauvegarde_quotidien=oui^M$
            sauvegarde_hebdo=oui^M$
            ip_sauve_quotidien=ip^M$
            ip_sauve_hebdo=ip2^M$
            nom_module_rsyn_conf_quotidien=root^M$
            nom_module_rsyn_conf_hebdo=hebdo^M$


            M$ ... ça me rappelle une boite de Redmond ... ;)
            1. OK merci !
              ...
              c'est normal que Vi me colle des retours chariots ???
              (je l'exécute depuis Putty)
              1. Modérateur
                Peut être une option dans Putty...?
            2. bon là suis un peu paumé !!!
              j'ai executé le SED, OK
              mais dès que je refait un CAT -A, j'ai encore mes ^M
              ...
              ???
              [d39-adm@d39-appli scripts]# cat -A sauve.conf
              #sauve.conf^M$
              #fichier de conf pour les sauvegarde du serveur^M$
              #^M$
              #MaJ 11/2009^M$
              #^M$
              [SAUVE]^M$
              sauvegarde_quotidien=oui^M$
              sauvegarde_hebdo=oui^M$
              nom_module_rsyn_conf_quotidien=root^M$
              nom_module_rsyn_conf_hebdo=hebdo^M$
              [d39-adm@d39-appli scripts]# sed 's/^M$//' sauve.conf
              #sauve.conf
              #fichier de conf pour les sauvegarde du serveur
              #
              #MaJ 11/2009
              #
              [SAUVE]
              sauvegarde_quotidien=oui
              sauvegarde_hebdo=oui
              nom_module_rsyn_conf_quotidien=root
              nom_module_rsyn_conf_hebdo=hebdo
              [d39-adm@d39-appli scripts]# cat -A sauve.conf
              #sauve.conf^M$
              #fichier de conf pour les sauvegarde du serveur^M$
              #^M$
              #MaJ 11/2009^M$
              #^M$
              [SAUVE]^M$
              sauvegarde_quotidien=oui^M$
              sauvegarde_hebdo=oui^M$
              nom_module_rsyn_conf_quotidien=root^M$
              nom_module_rsyn_conf_hebdo=hebdo^M$
              [d39-adm@d39-appli scripts]#
              
              1. Modérateur
                As-tu mis l'option "-i" à la commande "sed" (si toutefois ta version de sed la supporte...) .

                sed -i.bak 's/^M$//' fichier

                Sinon :

                sed  's/^M$//' fichier > new_fichier

                1. Contributeur
                  Tes fichiers sont édités sous Windows ?

                  Et avec dos2unix ?
                  1. Merci !
                    ça venait de mon fichier de conf, créer à la base avec w$.
                    je l'ai donc recréer (echo > sauve.conf) puis edité avec Vi.

                    Merci aux contributeurs !