IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Affectation de variables


Sujet :

Linux

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 79
    Points : 28
    Points
    28
    Par défaut Affectation de variables
    Bonjour,


    J'ai du rechanger dans mes scripts de rsync.
    Voila le topo:
    Au lieu d'avoir les options de rsync dans mon fichier de conf, elles se retrouvent dans le fichier backup_src pour donner ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /home/paco/test  | "--compress --force --progress --stats --backup --backup-dir=$dest/`hostname`_$INCREMENTDIR -av"
    Comment dois-je mettre dans mon script 'start' pour que ca lise les options puis le chemin? La partie avant le pipe recoit $1 et celle après le pipe, $2. Faire un genre de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $rsync $2 $1 $dest/`hostname`_$INCREMENTDIR 2> ~/rsync/rsync_error
    Le script 'start' de départ:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for i in $(cat ~/rsync/backup_src); do
     $rsync $OPTIONS $i $dest/`hostname`_$INCREMENTDIR 2> ~/rsync/rsync_error
     if [ $? != 0 ]; then
     Mail $mailadm1 -s `hostname` Backup Report < ~/rsync/rsync_error
     fi
    Merci beaucoup

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 79
    Points : 28
    Points
    28
    Par défaut
    Je pensais, est-il possible de le faire avec awk/gawk? Ce serai plus simple je pense.

    D'autres avis?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 106
    Points : 104
    Points
    104
    Par défaut
    Citation Envoyé par paco69
    Je pensais, est-il possible de le faire avec awk/gawk? Ce serai plus simple je pense.

    D'autres avis?

    tu peux ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    awk -F "|" '{ $rsync $2 $1 $dest/`hostname`_$INCREMENTDIR 2> ~/rsync/rsync_error }' ~/rsync/backup_src
    Amine

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 79
    Points : 28
    Points
    28
    Par défaut
    Voilà ta commande, juste un peu modifiée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     awk -F "|" '{ $rsync $2 $1 $dest 2> $path/rsync_error }' $path/backup_src
    plus haut dans le script, j'ai path=`pwd`.
    J'ai laissé '/`hostname`_$INCREMENTDIR' pour les options car sinon il ne reconnaissait pas les `` (^ caractère invalide « ` » dans l'expression).

    Voila le message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Starting RSYNC...
    awk: cmd. ligne:1: (FILENAME=/root/rsync/backup_src FNR=1) Fatal: tentative de division par zéro
    RSYNC finished.
    ??? Waouw! Quézako comme erreur!?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 106
    Points : 104
    Points
    104
    Par défaut
    Citation Envoyé par paco69
    Voilà ta commande, juste un peu modifiée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     awk -F "|" '{ $rsync $2 $1 $dest 2> $path/rsync_error }' $path/backup_src
    plus haut dans le script, j'ai path=`pwd`.
    J'ai laissé '/`hostname`_$INCREMENTDIR' pour les options car sinon il ne reconnaissait pas les `` (^ caractère invalide « ` » dans l'expression).

    Voila le message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Starting RSYNC...
    awk: cmd. ligne:1: (FILENAME=/root/rsync/backup_src FNR=1) Fatal: tentative de division par zéro
    RSYNC finished.
    ??? Waouw! Quézako comme erreur!?
    A mon avis changes path avec un autre nom de variable!
    Amine

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 79
    Points : 28
    Points
    28
    Par défaut
    J'ai changé path par chemin. Malheuresement, j'ai la meme erreur.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 79
    Points : 28
    Points
    28
    Par défaut
    Pour ce message d'erreur, ne cherchez plus les d'jeuns, j'ai trouvé et c'est tout simple: suffit de mettre un '/' à la fin du chemin que je veux sauvegarder.
    Ce qui donne dans mon fichier backup_src:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /home/paco/test/ | "-av --compress --force --delete --backup --backup-dir=$dest_increment/`hostname`/$jour"
    au lieu de ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /home/paco/test | "-av --compress --force --delete --backup --backup-dir=$dest_increment/`hostname`/$jour"
    Par contre, je n'ai toujours pas résolu mon autre problème: pouvoir affecter mes variables $1 et $2 dans le fichier backup_src.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 79
    Points : 28
    Points
    28
    Par défaut
    Dans le fichier start j'ai mis ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk -F "|" '{ $rsync $2 $1 $current 2> $chemin/rsync_error }' -f `backup_src` -v
    Voila ce que j'ai comme erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    /root/rsync/backup_src: line 1: /home/paco/test/: is a directory
    /root/rsync/backup_src: line 1: -av --compress --force --delete --backup --backup-dir=/home/paco/archive_increment/centos/2006_mar-25-jui: Aucun fichier ou répertoire de ce type
    Peut-etre que quelqu'un pourra trouver comment corriger cela.
    Je pense ne plus etre très loin maintenant.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 79
    Points : 28
    Points
    28
    Par défaut
    Sinon, j'ai un autre début de solution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    IFS=":"
    while read -r src options
     do
            $rsync $options $src $current 2> $chemin/rsync_error
     done < $chemin/backup_src
    Qu'en pensez-vous?

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 79
    Points : 28
    Points
    28
    Par défaut
    J'essaye de le faire avec un cut:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    IFS=":"
    src=`cut -d":" -f1 ./../../root/rsync/backup_src1`
    options=`cut -d":" -f2 ./../../root/rsync/backup_src1`
    fichier=./../../root/rsync/backup_src1
     
     while read ligne
      do
     
            $rsync $options $src $dest_increment/`hostname`/$current 2> ./../../root/rsync/rsync_error
     
     done < $fichier
     
    # Test si tout est bien pris en compte
     echo rsync=[$rsync] options=[$options] src=[$src] dest=[$dest_increment/`hostname`/$current]
    Voilà ce que ca me retourne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Starting RSYNC...
    rsync=[/usr/bin/rsync] options=[-av --compress --force --stats --perms --backup --delete --backup-dir=$dest_increment/`hostname`/$jour
    -av --compress --force --stats --perms --backup --delete --backup-dir=$dest_increment/`hostname`/$jour
    -av --compress --force --stats --perms --backup --delete --backup-dir=$dest_increment/`hostname`/$jour
    -av --compress --force --stats --perms --backup --delete --backup-dir=$dest_increment/`hostname`/$jour] src=[/home/paco/test/home/paco/test1
    /home/paco/centos1
    /home/paco/images] dest=[/home/paco/archive_increment/centos/main]
    RSYNC finished.
    J'ai pas l'impression que tout soit bien pris en compte, que ca lance correctement rsync comme il faut.
    Une idée?

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Pourquoi pas simplement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while IFS=: read source options
    do
            rsync $options $sources ..................
    done < fichier.config
    Les valeurs parsées de chaque ligne seront affectées aux variable shell $options et $sources
    :q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp
    :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT
    Jabber: ripat at im.apinc.org

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 79
    Points : 28
    Points
    28
    Par défaut
    C'est po vrai! J'ai galéré tout ce temps! alors que cette petite ligne (avec la bonne syntaxe) marche!
    Pourquoi t'es pas passé par là plus tot!?

    En tout cas, je te remercie beaucoup.

    Par contre, la seule chose qui ne va pas, c'est que j'ai une option qui n'est pas prise en compte:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    --backup-dir=$dest_increment/`hostname`/$jour
    Mon fichier source se présente ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /home/paco/test/:-av --compress --force --stats --delete --backup --backup-dir=$dest_increment/`hostname`/$jour
    $dest_increment & $jour sont des variables se trouvant dans un fichier backup.conf.

    As-tu une idée?

  13. #13
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Dans ton fichier config tu mets simplement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /home/paco/test/:-av --compress --force --stats --delete --backup --backup-dir=
    Et dans le script:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while IFS=: read sources options
    do
            rsync $options$dest_increment'/'$(hostname)'/'$jour $sources ..................
    done < fichier.config
    :q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp
    :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT
    Jabber: ripat at im.apinc.org

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 79
    Points : 28
    Points
    28
    Par défaut
    Thank you very much.

    Ca marche impeccable.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème d'affectation de variable
    Par bob33 dans le forum C
    Réponses: 3
    Dernier message: 04/11/2005, 17h01
  2. Affecter une variable javascript à une variable php
    Par gwendy dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/10/2005, 20h58
  3. affecter une variable de type stringstream
    Par sorari dans le forum SL & STL
    Réponses: 3
    Dernier message: 24/03/2005, 11h14
  4. [PS] affectation de variable
    Par madmortal dans le forum SQL
    Réponses: 2
    Dernier message: 01/09/2004, 13h17
  5. script SQL : affectation de variables
    Par Laura dans le forum Requêtes
    Réponses: 3
    Dernier message: 28/10/2003, 21h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo