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

Shell et commandes GNU Discussion :

Correction script shell paramètres


Sujet :

Shell et commandes GNU

  1. #41
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Par défaut
    Bah non...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for environnement in $1; do
    	echo "environnement sélectionné $1"
    done
    une boucle n'a d’intérêt que si tu traites plusieurs éléments... alors que tu n'en as qu'un seul !
    De plus, ta boucle crée une variable du nom "environnement" que tu n'utilises pas
    A mon avis, on tourne complément en rond tant que tu n'auras pas lu plus d'infos sur le fonctionnement du shell.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "environnement sélectionné $1"
    fait la même chose...

  2. #42
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 389
    Par défaut
    Ligne 17 à 19 : à revoir

  3. #43
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2018
    Messages : 129
    Par défaut
    Svear,

    je me cite j'ai écrit ceci quand même
    "J'explique pour une meilleure compréhension en tapant par exemple : ./ingest_scriptlisterfiles2.sh dev ou devcnt ou int je veux que le script en s'exécutant sélectionne indépendamment l'un de l'autre soit l'environnement dev ou devcnt ou int située sous l'arborescence /sftpusers/user-*/data/dev ou /sftpusers/user-*/data/devcnt ou /sftpusers/user-*/data/int

    Il n'est pas écrit ./ingest_scriptlisterfiles2.sh dev devcnt int j'utilise les mots "indépendamment l'un de l'autre"

    Tout cette confusion me fait penser aux médias qui reprennent des interviews qu'ils coupent pour faire croire aux gens ce qui n'est pas strictement dit par l'interviewé. Je comprends mieux la manipulation des médias maintenant lol

    Bref j'ai aussi compris que des choses étaient inutiles vous me les avez montré certes mais je n'arrive pas à les mettre en application. Ton exemple par exemple j'essaye de l'utiliser mais pour le moment je n'arrive à aucun résultat.

    Je vous écoute les gars mais je n'arrive pas à tout capter

  4. #44
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 692
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 692
    Par défaut
    si on considère que appeler le script sans argument est une erreur, alors son code de sortie (exit) ne peut pas être 0 (en effet, 0 indique une exécution complète sans erreurs !).

    peux-tu nous expliquer pourquoi tu conserves la boucle for, stp ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #45
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2018
    Messages : 129
    Par défaut
    effectivement comme cela, cela fonctionne tout aussi bien sans boucle for

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #!/bin/bash
     
    date=$(date +%Y%m%d%H%M)
    dir='/sftpusers/user-*/data'
    environnement=$1
    log=/home/user-ingest/listerfichiers/log/fichierlog_"$environnement"_"$date".txt
     
    ######################################################
    #     Parametres du script
    ######################################################
     
    if [ $# -eq 0 ]; then
    	echo "Pas d'environnement sélectionné. Relancer les script avec dev devcnt ou int derrière la commande"
    	exit 0
    fi
     
     
    echo "environnement sélectionné $1"

  6. #46
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 868
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 868
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par saga974 Voir le message
    Tout cette confusion me fait penser aux médias qui reprennent des interviews qu'ils coupent pour faire croire aux gens ce qui n'est pas strictement dit par l'interviewé. Je comprends mieux la manipulation des médias maintenant lol
    Oh, je n'ai rien coupé. J'ai repris ta phrase intégralement. Tu remarqueras que j'ai rajouté ensuite "mais admettons" signifiant que j'accepte l'erreur d'écriture (de ta part !!!) et que tu pensais "un seul à la fois" en écrivant "des". Mais quand j'ai posé la question "pourquoi tu utilises $2 et $3 pour un script pensé pour un seul argument" tu n'as pas répondu (c'est pourtant ton code ça, code ni coupé ni modifié !!!).
    Ce qui me fait penser, moi, aux politiques à qui on demande "pourquoi n'avez-vous rien fait alors qu'il y avait telle ordonnance exécutoire qui n'a pas été exécutée ce qui a amené ensuite de drame" et qui, quand ils répondent (rarement), répondent "nous devons faire le choix de la dignité" ou autres arabesques latérales du même genre.

    Citation Envoyé par saga974 Voir le message
    Est ce que ceci est mieux si le case est inutile ?
    Nom : images.jpg
Affichages : 90
Taille : 9,7 Ko
    Le shell ce n'est pas "jeter des instructions au hasard en se demandant si le résultat sera correct". C'est "j'ai un problème, je réfléchis aux étapes pour le résoudre, puis je code ces étapes en utilisant les instructions que je connais".

    Citation Envoyé par saga974 Voir le message
    Je le supprime et teste la encore cela fonctionne bien
    Sans déconner???

    Citation Envoyé par saga974 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ######################################################
    #     Parametres du script
    ######################################################
     
    for environnement in $1; do
    	echo "environnement sélectionné $1"
    done
    Je vous écoute les gars mais je n'arrive pas à tout capter
    Et tu l'as écouté le fait que boucler sur "un seul truc" était inutile? Car ça a été dit trois fois !!!

    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ######################################################
    #     Parametres du script
    ######################################################
     
    echo "environnement sélectionné $1"
    Plus le exit 0 mentionné par N_BaH qui devrait être exit 1 mais là c'est juste du détail (s'il n'y avait que ce détail là ce serait le bonheur)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #47
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 327
    Par défaut
    Citation Envoyé par saga974 Voir le message
    echo "environnement sélectionné $1"
    Ok, ça marche et donc c'est bien ?

    Comprends tu au moins les lignes 5 et 6 ? avec le code précédent et ton usage ici de $1, j'ai des doutes

  8. #48
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2018
    Messages : 129
    Par défaut
    J'ai corrigé le exit 1. Pourquoi cela fonctionne aussi avec exit 0 j'ai les mêmes résultats ?

    Papajoker,

    J'avoue je comprends pas tout c'est vrai et ca je l'explique au moins 15 fois par phrases au moins autant que les fautes dans le script

    Admettons que je veuille rajouter la possibilité au script de n'admettre que ces 4 solutions en tapant le script :
    ./ingest_scriptlisterfiles2.sh dev --> le script continue ok ca c'est bon
    ./ingest_scriptlisterfiles2.sh devcnt --> le script continue ok ca c'est bon
    ./ingest_scriptlisterfiles2.sh int --> le script continue ok ca c'est bon
    ./ingest_scriptlisterfiles2.sh --> le script s'interompt ok ca c'est bon

    Mais

    ./ingest_scriptlisterfiles2.sh "une valeur quelconque qui n'est pas dev ou devcnt ou int" --> le script s'interompt aussi comment réaliser cela ?

    dois je mettre un elif ici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if [ $# -eq 0 ]; then
    	echo "Pas d'environnement sélectionné. Relancer les script avec dev devcnt ou int derrière la commande"
    	exit 1
    fi

  9. #49
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 327
    Par défaut
    Citation Envoyé par saga974 Voir le message
    J'ai corrigé le exit 1. Pourquoi cela fonctionne aussi avec exit 0 j'ai les mêmes résultats ?
    C'est ce que l'on t'a dit plus haut simplement "exit 0" signifie sortie sans erreur. Ce qui est justement l'inverse à cette ligne : nous sortons volontairement parce qu'il y a une erreur.

    Citation Envoyé par saga974 Voir le message
    dois je mettre un elif ici
    Tu viens de coder un exit 1 ! donc un simple/classique "if" fait l'affaire

  10. #50
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 692
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 692
    Par défaut
    Citation Envoyé par saga974 Voir le message
    Admettons que je veuille rajouter la possibilité au script de n'admettre que ces 4 solutions en tapant le script :
    ./ingest_scriptlisterfiles2.sh dev --> le script continue ok ca c'est bon
    ./ingest_scriptlisterfiles2.sh devcnt --> le script continue ok ca c'est bon
    ./ingest_scriptlisterfiles2.sh int --> le script continue ok ca c'est bon
    ./ingest_scriptlisterfiles2.sh --> le script s'interompt ok ca c'est bon

    Mais

    ./ingest_scriptlisterfiles2.sh "une valeur quelconque qui n'est pas dev ou devcnt ou int" --> le script s'interompt aussi comment réaliser cela ?
    tu vas croire que je me moque de toi, mais pour faire ça, il faut utiliser un case.
    un case, oui, mais un case qui teste $1 contre les valeurs attendues :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    case $1 in
    dev|devcnt|int) echo "on continue";;
    *) >&2 echo "mauvais argument \"$1\"; *dev*, *devcnt*, ou *int* attendu"; exit 1;;
    esac
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  11. #51
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2018
    Messages : 129
    Par défaut
    Nbah,

    Non t'inquietes je le prends pas mal mais bon sang ce que c'est dur pour moi. Mais dans la difficulté au moins j'ai le sourire.

    En effet la ca fonctionne

  12. #52
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Par défaut
    Perso j'utiliserais pas un case mais un if :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if [[ $1 != @(dev|devcnt|int) ]]
    then
     echo "$1 est invalide"
     exit 1
    fi
    Mais c'est peut être moins portable...

  13. #53
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2018
    Messages : 129
    Par défaut
    hizoka

    il faudra que j'essaye

    En attendant j'étais revenu sur le cumul des fonctions redirigées


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    #######################################################
    #          Informations sur les fichiers
    #######################################################
     
     
    infos_compteurs() {
     
    	find $dir/$environnement -type f | echo -e "\e[1;33mIl y a "$(find $dir/$environnement -type f 2>/dev/null | wc -l)" fichiers trouvés dans l'arborescence sftpusers/user-XXXX/data/"$environnement" \e[0m \n\n"
    }
     
     
    infos_presence_fichiers() {
     
    	today="$(date '+%s')"
    	while read fic; do
    		datedernieremodific="$(stat --format "%Y" "$fic")"
    		ecart=$((($today - $datedernieremodific) / 86400))
    		echo -e "nom du fichier : $fic"
    		echo -e "date dernier acces du fichier : $(stat --format "%.19x" "$fic")"
    		echo -e "durée de présence en jours : $ecart\n\n"
    		done
    }
     
     
     
    ######################################################
    #     Envoi des résultats trouvés vers le log
    ######################################################
     
     
     
    #find $dir/$environnement -type f 2>/dev/null | infos_compteurs >> "$log"
    #find $dir/$environnement -type f 2>/dev/null | infos_presence_fichiers >> "$log" 
     
    find $dir/$environnement -type f 2>/dev/null | (infos_compteurs ; infos_presence_fichiers) >> "$log"


    et plus précisément ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find $dir/$environnement -type f 2>/dev/null | (infos_compteurs ; infos_presence_fichiers) >> "$log"

    Pouvez-vous m'expliquer la différence entre au dessus et en dessous. Celle d'en dessous n'a jamais fonctionné. Je me suis fait tapé dessus quand j'ai expliqué que ce ne fonctionnait pas alors que celle du dessus fonctionne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find $dir/$environnement -type f 2>/dev/null | grep "data" | tee >(infos_compteurs >>"$log") >(infos_presence_fichiers >>"$log") >/dev/null

  14. #54
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 692
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 692
    Par défaut
    ça """marche""", mais ce n'est pas correct.

    je te montre pourquoi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $ echo "foo
    bar
    baz" | { head -1 lorem\ ipsum; while read line; do echo "while read : $line"; done;}
        "Lorem ipsum" dolor sit amet, consectetur adipiscing elit.
    while read : foo
    while read : bar
    while read : baz
    $
    ici, l'entrée standard de la liste de commandes (entre accolades, les parenthèses initient un sous-shell inutile) reçoit les données du echo, mais la première commande ne les utilise/consomme pas, elles sont donc disponibles pour la boucle.

    et là, le cat consomme les données, donc la boucle ne reçoit plus rien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ echo "foo
    bar
    baz" | { cat -; while read line; do echo "while read : $line"; done;}
    foo
    bar
    baz
    $
    infos_compteur() n'utilisent pas les données qui lui sont pipées (le pipe est inutile), et c'est infos_presence_fichiers() qui va pouvoir les utiliser !
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  15. #55
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 868
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 868
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par saga974 Voir le message
    J'ai corrigé le exit 1. Pourquoi cela fonctionne aussi avec exit 0 j'ai les mêmes résultats ?
    Ne confond pas "ce qui s'affiche à l'écran" et "le résultat produit"...

    Citation Envoyé par saga974 Voir le message
    et plus précisément ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find $dir/$environnement -type f 2>/dev/null | (infos_compteurs ; infos_presence_fichiers) >> "$log"
    Pouvez-vous m'expliquer la différence entre au dessus et en dessous.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find $dir/$environnement -type f 2>/dev/null | grep "data" | tee >(infos_compteurs >>"$log") >(infos_presence_fichiers >>"$log") >/dev/null
    Celle d'en dessous n'a jamais fonctionné. Je me suis fait tapé dessus quand j'ai expliqué que ce ne fonctionnait pas alors que celle du dessus fonctionne.
    Ah ça y est, la grande phase de victimisation "je me suis fait taper (à l'infinif et non au participe passé) quand j'ai expliqué...". Donc déjà là non, tu n'as rien expliqué du tout, tu as juste dit "ça marche pas" ce qui est tout sauf une explication. Parce que dans une explication on détaille ce qui se passe, les messages d'erreur, etc. bref on "explique" (expliquer = faire comprendre ou faire connaître, par un développement).

    Accesoirement ce code là...
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #!/bin/bash
     
    fct1() {
    	echo "Nb de caractères: $(wc -c)"
    }
     
    fct2() {
    	echo "Nb de lignes: $(wc -l)"
    }
     
    ls -l /tmp |tee >(fct1) >(fct2) >/dev/null
    ... fonctionne, lui, parfaitement. Donc si de mon côté moi je devais expliquer pourquoi chez-toi ça ne fonctionne pas, j'expliquerais que ça vient de l'ICC en général et plus particulièrement de la façon dont tu as codé les fonctions "info_compteurs" et "info_presence_fichiers".
    Or si tu t'es fait taper dessus, c'est parce que cela t'a déjà été fait remarquer (et disons-le franchement, on peut là encore dire "expliqué") par plusieurs personnes et à plusieurs reprises sans que cela ne t'amène à réfléchir un minimum, que ces fonctions ne prennent pas en compte le flux que tu leur envoies (ie le "find..." initial). Donc (et là c'est juste une histoire de logique), si tu appelles des fonctions en leur passant des infos qu'elles n'utilisent pas (donc en résumé si tu ne les appelles pas correctement !!!), ne viens pas demander ensuite pourquoi dans telle configuration ça fonctionne et dans telle autre ça ne fonctionne pas, cela s'appelle la "part de chance" qui fait que dans un certain petit pourcentage de cas ça "marchotte" et dans la grande majorité ça plante lamentablement.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  16. #56
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2018
    Messages : 129
    Par défaut
    Merci à tous pour vos conseils et aides précieux

Discussions similaires

  1. Script shell qui parcourt un fichier pour avoir la liste des paramètres
    Par 69Pierre dans le forum Shell et commandes GNU
    Réponses: 12
    Dernier message: 24/06/2019, 19h03
  2. Réponses: 4
    Dernier message: 13/05/2014, 15h49
  3. Création d'un script Shell avec 4 paramètres en entrée
    Par Lerchechem dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 17/09/2013, 12h32
  4. Passer des paramètres d'un script shell à une application Java
    Par Kihmé Xs dans le forum Général Java
    Réponses: 4
    Dernier message: 02/05/2012, 23h56
  5. afficher les paramètres d'un script shell avec une boucle for
    Par nakatami dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 15/03/2011, 20h21

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