Salut, merci pour vos réponses. Steve j'essai d'adapter ton code à mon script. Je me pose la question dans le cas ou j'ai plusieurs message à mettre.
Voila un bout de mon script :
#!/bin/sh
#
# Inclusion du fichier de configuration
. /etc/backupeur/backupeur.conf
# Initialisation des variables
ID_ERREUR=0
# controle des parametres --------------
no_parametre() {
echo "Erreur : vous devez donner une action"
echo "Syntaxe : backup (file|mysql|bande)"
echo " - backup file --> lance une sauvegarde sur disques dur"
echo " - backup mysql --> sauvegarde uniquement les bases de données"
echo " - backup bande --> lance la copie sur une péripherie type dat, lto"
exit 1
}
# Définition des fonctions -------------
# Mise à jour de la date pour les logs
date_log () {
DATE_LOG=`$BIN/date +%b" "%d" "%T`
}
# Creation de la variable pour la date
# des fichiers sauvegardes.
date_file () {
DATE_FILE=`$BIN/date +%Y%m%d`
}
# Creation d'un fichier lock pour éviter de lancer la commande
# de sauvegarde depuis un autre serveur
create_lock_file() {
LOCK_FILE=`$BIN/touch $BACKUP_DEST/$HOSTNAME.lock`
}
# Suppression du fichier lock
delete_lock_file () {
DELETE_LOCK_FILE=`$BIN/rm -f $BACKUP_DEST/$HOSTNAME.lock`
if [ "$?" -ne 0 ]
then
MESSAGE="Suppression du fichier 1ドル impossible"
erreur "$MESSAGE"
fi
}
# Controle si un fichier lock pour empecher le
# lancement de plusieurs sauvegarde en même temps
# a partir d'un meme host
# 1ドル est le nom du fichier lock pour la sauvegarde
# en cours
check_lock_file() {
NBLOCK=`find $BACKUP_DEST -name 1ドル | wc -l`
if [ $NBLOCK -gt 0 ]
then
MESSAGE="Impossible de lancer la sauvegarde, elle est déjà en cours"
erreur "$MESSAGE"
exit 1
fi
}
# Suppression du fichier antérieur au
# temps de retention
# 1ドル correspond au prefix du nom du fichier
old_file() {
# Parcours du repertoire de destination
# avec le filtre sur le nom du fichier
for FILE in $BACKUP_DEST/*1ドル*
do
# Recupere le timestamp du fichier
STAT=`stat -c '%Y' $FILE`
# date du jour
DATE=`date +%Y%m%d`
# Convertion en timestamp
TIMESTAMP_DAY=`date -d $DATE '+%s'`
# calcul de l'écart en timestamp
# par rapport au temps de retention
DELTA=`$BINDIR/expr $RETENTION \* 86400`
if [ $STAT -lt $TIMESTAMP_MINI ]
then
RM=`$BIN/rm -f $FILE`
if [ "$?" -no 0 ]
then
echo "Suppression du fichier $FILE impossible" > ${LOGFILE}
fi
fi
MESSAGE="Suppression du fichier 1ドル-$OLD_DATE.tar.gz"
log "$MESSAGE"
done
}
backup_mysql() {
# Creation du nom du fichier lock
NAME_LOCK_FILE="$HOSTNAME.lock"
# Controle si une sauvegarde est déjà en cours
check_lock_file "$NAME_LOCK_FILE"
# Création du fichier lock
create_lock_file "$NAME_LOCK_FILE"
# Cree la date inclue dans le nom de l'archive
date_file
# Compte le nombre de ligne dans le tableau
NBBASE=`echo ${#BACKUP_MYSQL[*]}`
I=0
while [ $I -lt $NBBASE ]
do
FILENAME=`echo ${BACKUP_MYSQL[$I]}`
DATANAME=`echo ${BACKUP_MYSQL[$I]}`
old_file "$MYSQL_PREFIX-$FILENAME"
MYSQL=`$BINDIR/mysqldump -h $MYSQL_HOST -P $MYSQL_PORT -u $MYSQL_USER -p$MYSQL_PASS $MYSQL_OPT $DATANAME > $BACKUP_DEST/$MYSQL_PREFIX-$FILENAME-$DATE_FILE.sql 2>> $LOGDIR`
if [ "$?" -ne 0 ]
then
MESSAGE="Erreur pendant l'export de la base $FILENAME"
erreur "$MESSAGE"
fi
MESSAGE="Compression du fichier $MYSQL_PREFIX-$FILENAME-$DATE_FILE.sql"
log "$MESSAGE"
TAR=`tar $TAR_OPT $BACKUP_DEST/$MYSQL_PREFIX-$FILENAME-$DATE_FILE.tar.gz $BACKUP_DEST/$MYSQL_PREFIX-$FILENAME-$DATE_FILE.sql 2>> $LOGDIR`
if [ "$?" -ne 0 ]
then
MESSAGE="Erreur pendant la compression du fichier $MYSQL_PREFIX-$FILENAME-$DATE_FILE.sql"
erreur "$MESSAGE"
fi
MESSAGE="Suppression du fichier $MYSQL_PREFIX-$FILENAME-$DATE_FILE.sql"
log "$MESSAGE"
RM=`$BIN/rm -f $BACKUP_DEST/$MYSQL_PREFIX-$FILENAME-$DATE_FILE.sql 2>> $LOGDIR`
if [ "$?" -ne 0 ]
then
MESSAGE="Erreur à la suppression du fichier $MYSQL_PREFIX-$FILENAME-$DATE_FILE.sql"
erreur "$MESSAGE"
fi
I=`$BINDIR/expr $I + 1 2>> $LOGDIR`
done
delete_lock_file
exit 0
}
# Creation du fichier temporaire
LOGFILE=${mktemp -q}
if [ "$?" -ne 0 ]
then
echo "$DATE_LOG $HOSTNAME backupeur[$$]: Création du fichier temporaire impossible" >> $LOGDIR
exit 1
fi
case "1ドル" in
"file") backup_file ;;
"mysql") backup_mysql ;;
"bande") backup_bande ;;
"") no_parametre ;;
"*") echo "toto" ;;
esac
[^] # Re: à l'envers ;-)
Posté par Philippe M (site web personnel) . En réponse au message stderr dans une variable. Évalué à 1.
Voila un bout de mon script :
Born to Kill EndUser !