• [^] # Re: à l'envers ;-)

    Posté par (site web personnel) . En réponse au message stderr dans une variable. Évalué à 1.

    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`

    TIMESTAMP_MINI=`$BINDIR/expr $TIMESTAMP_DAY - $DELTA`

    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

    Born to Kill EndUser !