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

Python Discussion :

Passer une commande bash non ephemere, permanente. [Python 3.X]


Sujet :

Python

  1. #1
    Membre régulier Avatar de robinechuca
    Homme Profil pro
    PHELMA grenoble inp
    Inscrit en
    avril 2019
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : PHELMA grenoble inp
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : avril 2019
    Messages : 97
    Points : 121
    Points
    121
    Par défaut Passer une commande bash non ephemere, permanente.
    Bonjour,

    Dans un script, python modifie le contenu de .bashrc
    J'aimerais que python puisse recharger ce fichier, et que le chargement reste effectif meme une fois le script termine.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    robin@poussifix:~$ ma_commande
    ma_commande: command not found
    robin@poussifix:~$ python3
    Python 3.8.5 (default, Jul 28 2020, 12:59:40) 
    [GCC 9.3.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import os
    >>> os.system("alias ma_commande='ls'")
    0
    >>> exit()
    robin@poussifix:~$ ma_commande
    ma_commande: command not found
    robin@poussifix:~$
    Bref des que je sors de l'interpreteur, les commandes passees perdent leur effets.
    subprocess semble plus puissant (https://docs.python.org/3/library/subprocess.html) mais je ne sais pas si il peux repondre a ce probleme.

    Merci

  2. #2
    Membre averti
    Homme Profil pro
    occupé
    Inscrit en
    juin 2018
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : occupé

    Informations forums :
    Inscription : juin 2018
    Messages : 225
    Points : 320
    Points
    320
    Par défaut
    Bonjour,
    Je n'ai pas compris . Tu veux modifier ton bashrc depuis python?
    édit:
    Ah oui ,tu veux que la modification inscrite dans ton bashrc existe dans l'interpreteur python.. C'est bien ça?

  3. #3
    Membre averti
    Homme Profil pro
    occupé
    Inscrit en
    juin 2018
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : occupé

    Informations forums :
    Inscription : juin 2018
    Messages : 225
    Points : 320
    Points
    320
    Par défaut
    Si j'ai bien traduit ta demande, celle-ci concerne plutôt le shell.
    Pour créer une nouvelle commande dans le shell, tu peux mettre ton script 'nouvelle_commande" dans /usr/bin/
    Tu le rends exécutable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chmod +x nouvelle_commande
    Il sera désormais accessible comme les autres commandes shell depuis python...

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    8 684
    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 : 8 684
    Points : 23 798
    Points
    23 798
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par robinechuca Voir le message
    Dans un script, python modifie le contenu de .bashrc
    Jusque là, pas de problème. Tu ouvres le .bashrc, tu le modifies et tu le refermes. Python sait très bien faire cela.

    Citation Envoyé par robinechuca Voir le message
    J'aimerais que python puisse recharger ce fichier, et que le chargement reste effectif meme une fois le script termine.
    Là pas possible, définitivement. Parce que là, tu te heurtes à l'OS (je présume que c'est de l'Unix/Linux)
    Linux a un système de gestion de ses processus extrêmement rigoureuse. Chaque nouveau processus (fils de celui qui le lance) est totalement indépendant et décorellé de celui de son père. A tel point qu'il faut passer par des outils de communication spécifique quand on veut les faire communiquer entre eux.
    Donc quand tu es dans ton shell et que tu lances python mon_script.py, le programme Python se déroule dans un nouveau shell indépendant. Et même si ce shell peut charger (au travers de la commande source) le .bashrc modifié, il n'en restera pas moins que ce shell reste fils de celui dans lequel toi tu évolues. Et en aucun cas un fils peut influer sur son père (à tel point qu'il n'existe même aucun moyen pour que ne serait-ce qu'une simple variable shell modifiée dans un fils remonte vers son père).

    Solution palliative: tu crées un python qui modifie ton .bashrc (ce qui en soit est déjà assez bizarre, un .bashrc ne se modife pas tous les 4 matins qu'on ait besoin d'un script pour ça et perso j'aime beaucoup Python mais si je devais écrire un script qui rajoute un alias dans le .bashrc je l'écrirais en shell, ça irait plus vite => echo "alias ma_commande='ls'" >>~/.bashrc) puis une fois le script terminé, je recharge le .bashrc manuellement => source ~/.bashrc.

    PS: c'est "éphémère" et "permanente".
    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

  5. #5
    Membre régulier Avatar de robinechuca
    Homme Profil pro
    PHELMA grenoble inp
    Inscrit en
    avril 2019
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : PHELMA grenoble inp
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : avril 2019
    Messages : 97
    Points : 121
    Points
    121
    Par défaut
    Citation Envoyé par Hominidé Voir le message
    Bonjour,
    Je n'ai pas compris . Tu veux modifier ton bashrc depuis python?
    édit:
    Ah oui ,tu veux que la modification inscrite dans ton bashrc existe dans l'interpreteur python.. C'est bien ça?
    J'aimerai que la modification inscrite dans le .bashrc existe en dehors de l'interpreteur python.

    Là pas possible, définitivement. Parce que là, tu te heurtes à l'OS (je présume que c'est de l'Unix/Linux)
    Aille! Ca repond trop bien a ma question. zut!
    Si le processus fils n'a pas de pouvoir sur le processus parent. Il y a t-il un moyen que le processus fils demande 'poliment' au processus parent d'executer une commande? De cette facon ce n'est pas le fils mais le pere qui execute l'instruction.

    Mais merci pour ces reponses claires et decevantes

  6. #6
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    8 684
    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 : 8 684
    Points : 23 798
    Points
    23 798
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par robinechuca Voir le message
    J'aimerai que la modification inscrite dans le .bashrc existe en dehors de l'interpreteur python.
    Pas de souci. Python ouvre le .bashrc (fopen), le lit et stocke son contenu dans sa mémoire (readline), rajoute dans sa mémoire ce qu'il faut modifier et réécrit le tout (write). Tout ça reste très classique

    Citation Envoyé par robinechuca Voir le message
    Si le processus fils n'a pas de pouvoir sur le processus parent. Il y a t-il un moyen que le processus fils demande 'poliment' au processus parent d'executer une commande? De cette facon ce n'est pas le fils mais le pere qui execute l'instruction.
    Hé non. Parce que le parent, c'est le bash dans lequel tu évolues au quotidien et que ce bash n'est pas serveur (il n'a pas d'outil lui permettant de recevoir une requête venant d'un autre processus). Ce qui est d'ailleurs un gage de sécurité (les serveurs sont généralement le point de faiblesse des OS car c'est par là que les hackeurs tentent de rentrer).

    Ok par ailleurs il existe des outils (exemple le "cron") qui peuvent être "réveillés" par un signal externe (kill -1) pour recharger leur configuration. Cela aurait pu être un truc utile pour le shell. Malheureusemnt cette possibilité ne lui a pas été programmée.
    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

  7. #7
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    décembre 2012
    Messages
    3 705
    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 : 3 705
    Points : 10 787
    Points
    10 787
    Par défaut
    Oui, mais on pourrait le faire en définissant un trap coté père (exemple simple en bash) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    1$ trap 'source /tmp/file.sh' 12
    1$ alias cmd_test
    bash: alias: cmd_test : non trouvé
    1$ bash
    2$ echo "alias cmd_test='ls -al'" >/tmp/file.sh
    2$ kill -12 $PPID
    2$ exit
    1$ alias cmd_test
    alias cmd_test='ls -al'
    Cordialement.

  8. #8
    Membre régulier Avatar de robinechuca
    Homme Profil pro
    PHELMA grenoble inp
    Inscrit en
    avril 2019
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : PHELMA grenoble inp
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : avril 2019
    Messages : 97
    Points : 121
    Points
    121
    Par défaut
    Pas de souci. Python ouvre le .bashrc (fopen), le lit et stocke son contenu dans sa mémoire (readline), rajoute dans sa mémoire ce qu'il faut modifier et réécrit le tout (write). Tout ça reste très classique
    Oui oui, il n'y a aucun souci la dessus, je l'ai fait sans probleme. Je ne me suis pas exprime clairement dans ce message mais le probleme, c'est celui que vous avez evoque dans la deuxieme partie du message.

    Je ne comprend pas l'integralitee de ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $ trap 'source /tmp/file.sh' 12           # Ca veut dire que quand le processus 12 meurt, on excecute le fichier 'file.sh' ?
    1$ alias cmd_test                             # Pourquoi avoir choisi le numero 12 ?
    bash: alias: cmd_test : non trouvé   # La je comprends.
    1$ bash                                            # Ca par contre ca fait quoi?
    2$ echo "alias cmd_test='ls -al'" >/tmp/file.sh # Ca rajoute bien cette ligne a la fin de '/tmp/file.sh' ?
    2$ kill -12 $PPID                              # En arrivant la ca a ferme toutes les fenetres ouvertes en ssh, don le terminal.
    2$ exit                                              # Est-ce que c'est pour sortir de la commande 'bash' 2 lignes plus haut?
    1$ alias cmd_test                             # La fin c'est ok.
    alias cmd_test='ls -al'
    Je comprends vaguement l'idee generale mais je ne vois pas en quoi ca resoud le probleme, Si je definis un piege depuis python, pourquoi serai-t-il capte par le terminal pere?

  9. #9
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    décembre 2012
    Messages
    3 705
    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 : 3 705
    Points : 10 787
    Points
    10 787
    Par défaut
    Alors, déjà, le trap on le fait depuis le père, donc ton shell qui va lancer ton python.

    Ensuite, sous Linux, le 12 c'est en général le SIGUSR2, et un kill -12 $PPID, ne fait qu'envoyer le signal 12 au n° de process qui est dans la variable $PPID qui est en général le n° de process du père.
    Et donc, quand celui-ci reçoit le signal, il exécute ce qui est dans le trap précédemment défini pour ce signal.

    la commande bash ici, est là, juste pour simuler un fils (donc ton python) et dans ce bash, on modifie le fichier pour le trap et on envoi un signal 12 au père.
    ensuite le exit est là pour quitter le fils et donc retourner au père où pour l'exemple, on vérifie que l'alias est bien présent suite aux actions du fils.

    Mais, je reconnais que j'ai été un peu brut et suis parti du fait que tu étais dans mon contexte avec les signaux.

    Au lieu d'utiliser la valeur 12, vaut mieux utiliser le nom et donc faire un trap "source /tmp/file.sh" USR2 et un kill -USR2 $PPID.
    Cordialement.

  10. #10
    Membre régulier Avatar de robinechuca
    Homme Profil pro
    PHELMA grenoble inp
    Inscrit en
    avril 2019
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : PHELMA grenoble inp
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : avril 2019
    Messages : 97
    Points : 121
    Points
    121
    Par défaut
    Merci,

    Vos reponses sont tres claires.
    Finalement, la solution avec le 'trap' ne resoud pas le probleme car il faut tout de meme faire une intervention dans le shell parent.
    Dans mon cas, le script python est un script d'installation. L'idee c'est qu'il n'y absolument aucune intervention a faire ailleur.

    En me basant sur les idees que vous avez evoques, j'ai fait ceci:
    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
    36
    37
     
    robin@poussifix:~$ alias cmd_test
    bash: alias: cmd_test: not found
    robin@poussifix:~$ python3
    Python 3.8.5 (default, Jul 28 2020, 12:59:40) 
    [GCC 9.3.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import os
    >>> 
    >>> content = """
    ... [Unit]
    ... Description=c'est pour un test
    ... After=network-online.target
    ... 
    ... [Service]
    ... Type=simple
    ... ExecStart="alias cmd_test='ls -al'"
    ... Restart=on-failure
    ... 
    ... [Install]
    ... WantedBy=default.target
    ... """
    >>> with open(os.path.join(os.path.expanduser("~"), ".config/systemd/user/test.service"), "w") as f:
    ...     f.write(content)
    ... 
    180
    >>> os.system("systemctl --user enable test.service")
    Created symlink /home/robin/.config/systemd/user/default.target.wants/test.service → /home/robin/.config/systemd/user/test.service.
    0
    >>> os.system("systemctl --user start test.service")
    Failed to start test.service: Unit test.service has a bad unit file setting.
    See user logs and 'systemctl --user status test.service' for details.
    256
    >>> 
    robin@poussifix:~$ alias cmd_test
    bash: alias: cmd_test: not found
    robin@poussifix:~$
    Ca echoue, mais j'ai l'impression que c'est plus une histoire de syntaxe. Si la syntaxe etait correcte, est-ce que ca aurrait des chances de fonctionner?

  11. #11
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    décembre 2012
    Messages
    3 705
    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 : 3 705
    Points : 10 787
    Points
    10 787
    Par défaut
    Non, ça ne peut pas fonctionner, comme Sve@r te l'a déjà expliqué.

    En plus ici, j'ai du mal à comprendre ton besoin:

    Les alias fonctionnent sur un shell interactif, et donc un shell où tu tapes tes commandes et tu sembles dire que c'est depuis ce shell (père) que tu lances le python (fils), donc pourquoi ne peux tu pas faire d'autres commandes qui prépareraient ton shell (père) à discuter avec ton script python (fils) ?

    Enfin, si c'est vraiment utile dans ton cas...
    Cordialement.

  12. #12
    Membre régulier Avatar de robinechuca
    Homme Profil pro
    PHELMA grenoble inp
    Inscrit en
    avril 2019
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : PHELMA grenoble inp
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : avril 2019
    Messages : 97
    Points : 121
    Points
    121
    Par défaut
    Bon tres bien. Je trouve que c'est un peu trop bien securise tout ca...

  13. #13
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    8 684
    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 : 8 684
    Points : 23 798
    Points
    23 798
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    Oui, mais on pourrait le faire en définissant un trap coté père (exemple simple en bash) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    1$ trap 'source /tmp/file.sh' 12
    1$ alias cmd_test
    1$ bash
    2$ echo "alias cmd_test='ls -al'" >/tmp/file.sh
    2$ kill -12 $PPID
    2$ exit
    1$ alias cmd_test
    alias cmd_test='ls -al'
    Pas mal du tout !!! Il suffit alors au script Python d'envoyer un signal SIGUSR1 à son père
    Un peu tordu et fragile (il ne faut pas que le script Python soit lancé d'autre part) mais brillant

    Citation Envoyé par robinechuca Voir le message
    Finalement, la solution avec le 'trap' ne resoud pas le probleme car il faut tout de meme faire une intervention dans le shell parent.
    Oui mais cette intervention peut être inscrite dans le fichier .bashrc. Chaque shell sera donc "automatiquement" préprogrammé à traiter le signal reçu

    Citation Envoyé par robinechuca Voir le message
    Ca echoue, mais j'ai l'impression que c'est plus une histoire de syntaxe. Si la syntaxe etait correcte, est-ce que ca aurrait des chances de fonctionner?
    J'ai fait un test et ça a marché
    1) dans mon fichier "~/.bashrc", j'ai écrit l'instruction trap 'source /tmp/file.sh' SIGHUP (désolé disedorgue, j'ai préféré utiliser SIGHUP semblant être plus conventionnel pour ce genre d'action )
    2) j'ai écrit le script Python suivant
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/usr/bin/env python3
    #coding: utf-8
     
    with open("/tmp/file.sh", "a") as fp:
    	print("alias xxx='ls -al'", file=fp)
     
    import os
    import signal
    os.kill(os.getppid(), signal.SIGHUP)

    Ensuite, je lance un shell. Si j'appelle la commande xxx ça me répond xxx: commande introuvable. Puis je lance mon script Python, et ensuite je peux taper xxx et j'obtiens mon "ls"

    Citation Envoyé par robinechuca Voir le message
    Dans mon cas, le script python est un script d'installation. L'idee c'est qu'il n'y absolument aucune intervention a faire ailleur.
    Ben si c'est un truc d'installation, cela veut dire que tu n'as pas besoin d'avoir l'alias disponible immédiatement. Imagine que le script rajoute un alias dans le fichier "~/.bashrc", l'alias est alors bel et bien installé. Et l'utilisateur qui lancera son shell aura alors accès à l'alias.
    Quand j'installe un truc, le truc se déroule puis me dit" ok c'est installé" et j'i immédiatement accès au truc. Parfois s'il faut recharger une config, le truc me dit "redémarrez l'appli" ou bien "redémarrez l'ordi" et voilà quoi. Je me reconnecte, toute la config modifiée par le truc est alors rechargée et basta.

    J'ai l'impression que tu nous as posé un problème xy (au lieu de venir nous poser le vrai problème, tu nous as demandé comment résoudre la solution que tu avais imaginé, solution n'étant pas forcément la plus adéquate par rapport au problème initial).
    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

  14. #14
    Membre régulier Avatar de robinechuca
    Homme Profil pro
    PHELMA grenoble inp
    Inscrit en
    avril 2019
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : PHELMA grenoble inp
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : avril 2019
    Messages : 97
    Points : 121
    Points
    121
    Par défaut
    Je me reconnecte, toute la config modifiée par le truc est alors rechargée et basta.
    En effet, c'est d’ailleurs ce qui se passe pour le moment. Dans le cas ou on lance l'installateur depuis un terminal, je me demandais si il y avait moyen simple de rendre effectif les effets de suite.
    Mais effectivement afficher un message du genre "Installation réussie, veuillez tester le programme dans un nouveau terminal." est aussi une solution.

    Oui j'ai mal pose la question. De peur de metre trop d'informations et donc de decourager la lecture.

    Merci en tout cas d'avoir pris tout ce temps pour me repondre!

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

Discussions similaires

  1. Peut-on exécuter/invoquer/appeler une commande readline non liée du bash?
    Par jack-ft dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 20/10/2013, 19h29
  2. Passer une commande DOS par CodeBehind
    Par zooffy dans le forum ASP.NET
    Réponses: 20
    Dernier message: 04/02/2011, 14h36
  3. [Système] Une variable PHP dans une commande bash
    Par aroua dans le forum Langage
    Réponses: 1
    Dernier message: 19/07/2007, 17h23
  4. Réponses: 5
    Dernier message: 01/07/2007, 21h25
  5. [Modélisation]Passer une commande
    Par soad029 dans le forum Schéma
    Réponses: 4
    Dernier message: 15/11/2006, 22h45

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