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. Contributeur
    Salut,

    Et que disent tes logs ?
    0
    1. ben rien !
      en fait la condition n'est pas respecté !
      si je met un ELSE, il execute le ELSE !!!
      0
      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...
        0
        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 ;)
          0
          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.
            0
            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
              0
              1. Modérateur
                Oui c'est un retour chariot ;-(

                Affiche :

                cat -A sauve.conf

                0
            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 ... ;)
              0
              1. OK merci !
                ...
                c'est normal que Vi me colle des retours chariots ???
                (je l'exécute depuis Putty)
                0
                1. Modérateur
                  Peut être une option dans Putty...?
                  0
              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]#
                
                0
                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

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

                    Et avec dos2unix ?
                    0
                    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 !
                      0