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 :

code retour d'un shell


Sujet :

Linux

  1. #1
    F2S
    F2S est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 139
    Par défaut code retour d'un shell
    Bonjour à tous,

    Voilà mon soucis, je lance une proc-stock via un shell.
    ma proc renvoie plusieurs codes erreurs différents selon son exécutuion.

    ce que je cherche a faire, c'est : Récupèré le code erreur de la proc avec mon script shell...

    est ce que l'un de vous a une idée ?

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 271
    Par défaut
    Si le code d'erreur est retourné comme un simple printf :
    ret=$(cmd)

    Si le code d'erreur est un code de sortie :
    cmd
    ret=$?

  3. #3
    F2S
    F2S est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 139
    Par défaut
    ok merci, moi j'utilisais la deuxième solution ça ne marchait pas...

    ps: je n'ai pas acces au proc-stock...

    la seule chose que je sais c'est que si tu l'exécute via toad tu as la ligne "RESULT = STA-00005"

    en posant deux trois questions, il semblerait qu'il utilise la fonction oracle suivante pour renvoyer le code retour :
    "DBMS_OUTPUT.Put_Line('RESULT = ' || RESULT)"

    je vais tester tout ça et on verra

  4. #4
    F2S
    F2S est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 139
    Par défaut
    me revoilà dsl de vous dire que cela ne marche pas...

    voilà l'apel le script shell complet :
    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
     
    SQL_FILE=$EXEC_PATH/bin_config/script.sql
     
    echo "set outputserver on;" >> $SQL_FILE
    echo "DECLARE" >> $SQL_FILE
    echo " INTEGRATION_LOG_ID VARCHAR2(200);" >> $SQL_FILE
    echo " RESULT VARCHAR2(200);            " >> $SQL_FILE
    echo " P_ENT_TYPE NUMBER;               " >> $SQL_FILE
    echo " P_ENT_CODE NUMBER;               " >> $SQL_FILE
    echo " YEAR_IN NUMBER;                  " >> $SQL_FILE
    echo "BEGIN                             " >> $SQL_FILE
    echo " INTEGRATION_LOG_ID := '0';       " >> $SQL_FILE
    echo " RESULT := NULL;                  " >> $SQL_FILE
    echo " P_ENT_TYPE := 4;                 " >> $SQL_FILE
    echo " P_ENT_CODE := 999;               " >> $SQL_FILE
    echo " YEAR_IN := 2008;                 " >> $SQL_FILE
    echo "SSDX_ENG.DEALS_INBOUND_INTERFACES.CPS_INTERFACE ( INTEGRATION_LOG_ID, RESULT, P_ENT_TYPE, P_ENT_CODE, YEAR_IN );" >> $SQL_FILE 
    echo "DBMS_OUTPUT.Put_Line(RESULT); " >> $SQL_FILE
    echo "COMMIT; " >> $SQL_FILE 
    echo "END; " >> $SQL_FILE
    echo "/">>$SQL_FILE;;
     
    #exécution du fichier sql
    ORACLE_HOME/bin/sqlplus -L $USER/$PASSWORD@$DATABASE < $SQL_FILE > $LOG_FILE 2>&1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CODE_RETOUR=$($ORACLE_HOME/bin/sqlplus -L $USER/$PASSWORD@$DATABASE < $SQL_FILE > $LOG_FILE 2>&1 )
    ou
    ne marche pas

  5. #5
    Membre éclairé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2007
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Août 2007
    Messages : 509
    Par défaut
    Ca affiche quoi comme résultat?

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 271
    Par défaut
    Déjà avec $LOG_FILE 2>&1 tu rediriges stderr et stdout dans un fichier de log donc ret=$(cmd) ne retournera rien.

    Je ne connais pas du tout Oracle mais je pense que tu trouveras ce que tu veux du côté de :
    WHENEVER SQLERROR

    ce qui permet de retourner le code erreur sql si une erreur se produit pendant l'éxécution de la requête.

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    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 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par F2S Voir le message
    me revoilà dsl de vous dire que cela ne marche pas...

    voilà l'apel le script shell complet :
    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
     
    SQL_FILE=$EXEC_PATH/bin_config/script.sql
     
    echo "set outputserver on;" >> $SQL_FILE
    echo "DECLARE" >> $SQL_FILE
    echo " INTEGRATION_LOG_ID VARCHAR2(200);" >> $SQL_FILE
    echo " RESULT VARCHAR2(200);            " >> $SQL_FILE
    echo " P_ENT_TYPE NUMBER;               " >> $SQL_FILE
    echo " P_ENT_CODE NUMBER;               " >> $SQL_FILE
    echo " YEAR_IN NUMBER;                  " >> $SQL_FILE
    echo "BEGIN                             " >> $SQL_FILE
    echo " INTEGRATION_LOG_ID := '0';       " >> $SQL_FILE
    echo " RESULT := NULL;                  " >> $SQL_FILE
    echo " P_ENT_TYPE := 4;                 " >> $SQL_FILE
    echo " P_ENT_CODE := 999;               " >> $SQL_FILE
    echo " YEAR_IN := 2008;                 " >> $SQL_FILE
    echo "SSDX_ENG.DEALS_INBOUND_INTERFACES.CPS_INTERFACE ( INTEGRATION_LOG_ID, RESULT, P_ENT_TYPE, P_ENT_CODE, YEAR_IN );" >> $SQL_FILE 
    echo "DBMS_OUTPUT.Put_Line(RESULT); " >> $SQL_FILE
    echo "COMMIT; " >> $SQL_FILE 
    echo "END; " >> $SQL_FILE
    echo "/">>$SQL_FILE;;
     
    #exécution du fichier sql
    ORACLE_HOME/bin/sqlplus -L $USER/$PASSWORD@$DATABASE < $SQL_FILE > $LOG_FILE 2>&1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CODE_RETOUR=$($ORACLE_HOME/bin/sqlplus -L $USER/$PASSWORD@$DATABASE < $SQL_FILE > $LOG_FILE 2>&1 )
    ou
    ne marche pas
    Tamiel a parfaitement bien répondu. Si tu rediriges l'affichage d'une commande dans un fichier, tu ne peux pas le récupérer avec var=$(commande).

    Moi, je rajouterais juste que tu peux t'éviter tous ces ">> $SQL_FILE" en utilisant le groupement de commandes
    Au lieu de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    echo "set outputserver on;" >> $SQL_FILE
    echo "DECLARE" >> $SQL_FILE
    echo " INTEGRATION_LOG_ID VARCHAR2(200);" >> $SQL_FILE
    echo " RESULT VARCHAR2(200);            " >> $SQL_FILE
    echo " P_ENT_TYPE NUMBER;               " >> $SQL_FILE
    Tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    (
        echo "set outputserver on;"
        echo "DECLARE"
        echo " INTEGRATION_LOG_ID VARCHAR2(200);"
        echo " RESULT VARCHAR2(200);            "
        echo " P_ENT_TYPE NUMBER;               "
    ) >> $SQL_FILE
    Tu peux aussi utiliser les sorties numérotées
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    exec 4>$SQL_FILE
     
    echo "set outputserver on;" 1>&4
    echo "DECLARE" 1>&4
    echo " INTEGRATION_LOG_ID VARCHAR2(200);" 1>&4
    echo " RESULT VARCHAR2(200);            " 1>&4
    echo " P_ENT_TYPE NUMBER;               "  1>&4
    Ou associer les deux astuces
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    exec 4>$SQL_FILE
    (
        echo "set outputserver on;"
        echo "DECLARE"
        echo " INTEGRATION_LOG_ID VARCHAR2(200);"
        echo " RESULT VARCHAR2(200);            "
        echo " P_ENT_TYPE NUMBER;               "
    ) 1>&4
    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]

  8. #8
    F2S
    F2S est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 139
    Par défaut
    oui c'est vrai je m'en suis rendu compte apres... dsl

    j'ai modifier un peu le script (en suivant vos remarque) voilà a quoi il ressemble maintenant :
    un fichier script.sql qui donner :

    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
     
    WHENEVER SQLERROR EXIT FAILURE;
    VARIABLE TOTO VARCHAR2(200);
    DECLARE
     INTEGRATION_LOG_ID VARCHAR2(200);
     RESULT VARCHAR2(200);
     P_ENT_TYPE NUMBER;
     P_ENT_CODE NUMBER;
     YEAR_IN NUMBER;
    BEGIN
     INTEGRATION_LOG_ID := '0';
     RESULT := NULL;
     P_ENT_TYPE := 4;
     P_ENT_CODE := 999;
     YEAR_IN := 2008;
    SSDX_ENG.DEALS_INBOUND_INTERFACES.CPS_INTERFACE ( INTEGRATION_LOG_ID, RESULT, P_ENT_TYPE, P_ENT_CODE, YEAR_IN );
    COMMIT;
    :TOTO := RESULT;
    END;
    PRINT TOTO;
    exit;
    et mon shell qui est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    CODE_RETOUR=$($ORACLE_HOME/bin/sqlplus -L $USER/$PASSWORD@$DATABASE < $SQL_FILE )
     
    echo $CODE_RETOUR
     
    .... traitement sur le code retour ....
    hé rien je ne récupère rien du tt

  9. #9
    F2S
    F2S est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 139
    Par défaut
    info pour tamiel :

    enfaite la proc stock ne retour aucune valeur a proprement parler, pas de code de retour.
    elle utilise juste variable qu'elle met a jour en fonction de son état de traitement, mais elle ne tourne rien...

    donc l'idée que j'ai c'est lui de récupèré cette variable grace à une variable global et de faire un print dessu,

    mais ne sort je ne comprends pas trop


    ps: je ne maitrise absolument pas oracle ni même le shell

  10. #10
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    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 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par F2S Voir le message
    ps: je ne maitrise absolument pas oracle ni même le shell
    Oui on voit ça. Déjà tu confonds "code retour" et "résultat".

    En shell, un grand principe qu'il faut assimiler d'entrée, c'est que tout résultat affiché par un programme peut être récupéré et réutilisé dans le code

    Exemple: Un appel simple qui affiche le répertoire courant
    Même appel mais là, le répertoire courant est récupéré et réutilisé
    Le shell commence par créer un processus juste pour "pwd", puis récupère ce que ce programme affiche. et cet affichage est réutilisé à l'endroit où le code a été appelé (donc là où il y a "="). Et le programme traite cet affichage comme s'il avait été inscrit par le programmeur. En fait, c'est comme s'il y avait écrit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var=/le/répertoire//je/me/trouve
    A partir de là, on peut exploiter cette possibilité de façon plus complète. Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if [ "$(pwd)" = "/home/truc" ]
    then
        ...
    else
        ...
    fi
    Le shell commence d'abord par déléguer l'action de "pwd" à un sous-processus, puis récupère cet affichage et le retranscrit dans le contexte. En final, ça se traduit par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if [ "/le/répertoire/où/je/me/trouve" = "/home/truc" ]
    then
        ...
    else
        ...
    fi
    Une fois bien compris ce principe, on voit de suite les possibilités du shell qui sont infinies. Si le shell a besoin d'un outil particulier, il suffit de l'écrire en C ou autre et de faire en sorte que cet outil affiche son résultat à l'écran. Rien d'autre. Le shell sera alors en mesure d'utiliser le résultat affiché par l'outil. Mais ça ne marche que si tu utilises un programme qui affiche quelque chose et que tu ne rediriges pas cet affichage vers ailleurs.

    Maintenant le "code retour". C'est en fait beaucoup plus simple: tout programme bien fait renvoie en fin d'exécution une valeur particulière comprise entre 0 et 255. Cette valeur est stockée dans la variable "$?" et les conventions veulent qu'une valeur "0" signifie "ok, programme bien exécuté" et une autre signifie "le programme a eu un cas d'erreur".
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    date
    echo $?     # On aura 0 vu que le proframme "date" s'est bien exécuté
     
    rm -f .
    echo $?    # On n'aura pas 0 vu que "rm" ne peut pas effacer le répertoire "."
    En allant plus loin, on dit qu'un code "0" signifie "programme vrai" et un code pas à 0 signifie "programme faux" ce qui revient en fait à pouvoir tester les programmes de façon directe. D'ailleurs, l'instruction "if" ne peut être mise qu'avec un programme quel qu'il soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if rm -f .
    then
        echo "Le répertoire . a été effacé"
    else
        echo "Le répertoire . n'a pas été effacé"
    fi
    Et on en arrive au programme "test" (qui peut aussi s'écrire "[ ]") qui est un programme permettant de tester les choses (les égalités, les fichiers, etc...). Ce programme fonctionne comme tout programme Unix => si la condition qu'on lui demande de vérifier est respectée, son code retour est à 0 et sinon il n'est pas à 0

    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    test -d .
    echo $?     # On aura 0 vu que le "." est un répertoire
     
    test -d /etc/passwd
    echo $?     # On n'aura pas 0 vu que "/etc/passwd" n'est pas un répertoire
     
    if test -w /etc/passwd     # ou bien if [ -w /etc/passwd ]
    then
        echo "Soit vous êtes root, soit il y a un soucis sur votre machine"
    else
        echo "Tout semble ok"
    fi
    Donc si tu dois utiliser un programme annexe, te faut savoir
    - si ce programme affiche des valeurs suivant les cas
    - si ce programme renvoie un code retour
    Et prendre la décision d'utiliser l'une ou l'autre solution en fonction des réponses...

    Cours de shell ici : http://linux.developpez.com/cours/
    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]

  11. #11
    Membre éclairé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2007
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Août 2007
    Messages : 509
    Par défaut
    Citation Envoyé par F2S Voir le message
    oui c'est vrai je m'en suis rendu compte apres... dsl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    CODE_RETOUR=$($ORACLE_HOME/bin/sqlplus -L $USER/$PASSWORD@$DATABASE < $SQL_FILE )
     
    echo $CODE_RETOUR
     
    .... traitement sur le code retour ....
    hé rien je ne récupère rien du tt
    C'est normal que tu ne récupères rien du tout parce que tu mets le résultat de l'exécution de ta commande dans la variable CODE_RETOUR, ce qui n'est pas ce que tu cherches.
    Pour tester si une commande a réussi, comme il a été mentionné plus haut tu utilises $? ou sinon tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $ORACLE_HOME/bin/sqlplus -L $USER/$PASSWORD@$DATABASE < $SQL_FILE
    CODE_RETOUR=$?
    echo $CODE_RETOUR

  12. #12
    F2S
    F2S est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 139
    Par défaut
    dsl pour les confusions

    en tt cas je suis content de vous dire que ça marche...

    voilà ce que j'ai fais dans mon shell :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    # récupère le résultat de la commande
    CODE=$($ORACLE_HOME/bin/sqlplus -L $USER/$PASSWORD@$DATABASE < $SQL_FILE)
     
    #filtre sur le résultat pour récupèrer un mot
    RET=$(echo $CODE | grep -o "STA-".....)
     
    # affiche le résult
    echo "$RET"

  13. #13
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    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 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par F2S Voir le message
    dsl pour les confusions

    en tt cas je suis content de vous dire que ça marche...

    voilà ce que j'ai fais dans mon shell :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    # récupère le résultat de la commande
    CODE=$($ORACLE_HOME/bin/sqlplus -L $USER/$PASSWORD@$DATABASE < $SQL_FILE)
     
    #filtre sur le résultat pour récupèrer un mot
    RET=$(echo $CODE | grep -o "STA-".....)
     
    # affiche le résult
    echo "$RET"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #filtre sur le résultat pour récupèrer un mot
    RET=$($ORACLE_HOME/bin/sqlplus -L $USER/$PASSWORD@$DATABASE < $SQL_FILE | grep -o "STA-".....)
     
    # affiche le résult
    echo "$RET"
    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]

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/05/2014, 18h27
  2. [lftp] Code retour dans le shell
    Par extjbrunet dans le forum Shell et commandes GNU
    Réponses: 0
    Dernier message: 22/11/2013, 23h19
  3. Réponses: 1
    Dernier message: 21/06/2012, 11h54
  4. Bizzarerie en shell avec les codes retour
    Par kyake dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 13/04/2008, 12h20
  5. CODE RETOUR GENERE PAR PL/SQL POUR SHELL UNIX
    Par mimi_été dans le forum PL/SQL
    Réponses: 6
    Dernier message: 18/11/2004, 08h32

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