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. 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 !
    1. Contributeur
      Tes fichiers sont édités sous Windows ?

      Et avec dos2unix ?
      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. 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. 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. #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. 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. 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. 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. 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. ben rien !
                    en fait la condition n'est pas respecté !
                    si je met un ELSE, il execute le ELSE !!!