La condition ne s'execute pas ???

Résolu
ParMesSoins Messages postés 29 Statut Membre -  
ParMesSoins Messages postés 29 Statut Membre -
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. foobar47 Messages postés 13654 Statut Contributeur 534
     
    Salut,

    Et que disent tes logs ?
    0
  2. ParMesSoins Messages postés 29 Statut Membre 1
     
    ben rien !
    en fait la condition n'est pas respecté !
    si je met un ELSE, il execute le ELSE !!!
    0
  3. foobar47 Messages postés 13654 Statut Contributeur 534
     
    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
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. ParMesSoins Messages postés 29 Statut Membre 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
  6. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
  7. ParMesSoins Messages postés 29 Statut Membre 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. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Oui c'est un retour chariot ;-(

      Affiche :

      cat -A sauve.conf

      0
  8. ParMesSoins Messages postés 29 Statut Membre 1
     
    #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
  9. ParMesSoins Messages postés 29 Statut Membre 1
     
    OK merci !
    ...
    c'est normal que Vi me colle des retours chariots ???
    (je l'exécute depuis Putty)
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Peut être une option dans Putty...?
      0
  10. ParMesSoins Messages postés 29 Statut Membre 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]#
    
    0
  11. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
  12. foobar47 Messages postés 13654 Statut Contributeur 534
     
    Tes fichiers sont édités sous Windows ?

    Et avec dos2unix ?
    0
  13. ParMesSoins Messages postés 29 Statut Membre 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