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 ;)

13 réponses

jipicy Messages postés 41342 Statut Modérateur 4 896
 
Ben oui ;-((

Soit tu as dos2unix d'installer sur ton système et tu y passes un ch'tit coup :

dos2unix sauve.conf


Soit tu fais avec sed (Sed - Conversion retours chariots DOS (CRLF) / UNIX (LF) )

Ou "tr"...
1
foobar47 Messages postés 13654 Statut Contributeur 533
 
Salut,

Et que disent tes logs ?
0
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
foobar47 Messages postés 13654 Statut Contributeur 533
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
jipicy Messages postés 41342 Statut Modérateur 4 896
 
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
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
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Oui c'est un retour chariot ;-(

Affiche :

cat -A sauve.conf

0
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
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
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Peut être une option dans Putty...?
0
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
jipicy Messages postés 41342 Statut Modérateur 4 896
 
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
foobar47 Messages postés 13654 Statut Contributeur 533
 
Tes fichiers sont édités sous Windows ?

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