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 :

probleme sortie subprocess


Sujet :

Python

  1. #1
    Membre du Club Avatar de chaying
    Inscrit en
    Mars 2007
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 84
    Points : 57
    Points
    57
    Par défaut probleme sortie subprocess
    Bonjour

    J'essaie le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE_CA_CRT = ['/usr/bin/openssl', 'req', '-new', '-x509', '-extensions', 'v3_ca',
                        '-keyout', 'CA/private/cakey.pem', '-out', 'CA/cacert.pem', '-days', '3650',
                        '-config', './openssl.cnf']
     
        try:
            print os.getcwd()
            stdout, stderr = subprocess.Popen(CREATE_CA_CRT, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
            print stdout, stderr
        except (ValueError, OSError) as e:
            sys.exit('I couldn\'t create the root certificate, exiting !\n%s' % e)
    mais il reste bloque systematiquement lors de l'execution. Le script me demande la phrase de pass et se bloque. La commande s'execute tres bien dans le shell donc ca ne vient pas de openssl mais plutot de subprocess j'imagine.

    Mais je ne voie pas du tout ce qui l'empeche de finir. Le path s'affiche mais aucne sortie stdout ou stderr ?

    Merci

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    C'est gérable directement en Python avec pyOpenSSL.

    La doc: http://packages.python.org/pyOpenSSL/

  3. #3
    Membre du Club Avatar de chaying
    Inscrit en
    Mars 2007
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 84
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Merci pour le lien ! Mais tu n'aurais pas une idee de ce qu'il peut se passer ? C'est vraiment subprocess que je cherche a comprendre.

    Merci

  4. #4
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 813
    Points : 7 102
    Points
    7 102
    Par défaut
    t'as essayé avec l'option shell=True?
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  5. #5
    Membre du Club Avatar de chaying
    Inscrit en
    Mars 2007
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 84
    Points : 57
    Points
    57
    Par défaut
    Salut !

    Oui j'ai essaye : le script s'arrete avant meme d'afficher le repertoire (os.getcwd).

    Merci

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Ca n'a rien à voir, shell=True est à ajouter à subprocess lui-même.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        stdout, stderr = subprocess.Popen(CREATE_CA_CRT, stdout=subprocess.PIPE, 
                                            stderr=subprocess.PIPE, shell=True,)\
                                            .communicate()
    D'autre part, le man de openssl, au sujet de mots de passe, dit ceci:
    PASS PHRASE ARGUMENTS
    Several commands accept password arguments, typically using -passin and -passout for input and output passwords
    respectively. These allow the password to be obtained from a variety of sources. Both of these options take a single
    argument whose format is described below. If no password argument is given and a password is required then the user is
    prompted to enter one: this will typically be read from the current terminal with echoing turned off.

    pass:password
    the actual password is password. Since the password is visible to utilities (like 'ps' under Unix) this form
    should only be used where security is not important.

    env:var obtain the password from the environment variable var. Since the environment of other processes is visible on
    certain platforms (e.g. ps under certain Unix OSes) this option should be used with caution.

    file:pathname
    the first line of pathname is the password. If the same pathname argument is supplied to -passin and -passout
    arguments then the first line will be used for the input password and the next line for the output password.
    pathname need not refer to a regular file: it could for example refer to a device or named pipe.

    fd:number read the password from the file descriptor number. This can be used to send the data via a pipe for example.

    stdin read the password from standard input.
    Ce qui devrait se traduire par ces arguments
    ou le passer par un fichier comme indiqué.

    Je ne sais rien tester, j'ai une collection d'erreurs avec openSSL.

  7. #7
    Membre du Club Avatar de chaying
    Inscrit en
    Mars 2007
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 84
    Points : 57
    Points
    57
    Par défaut
    Salut Vincz

    Apres verification, avec ou sans shell=True, avec ou sans -passin file:filepath : le resultat est le meme. C'est a dire : blocage au milieu de l'execution de Popen.

    J'ai essaye avec le debugger pdb mais vu que le probleme se situe au milieu de l'instruction Popen, cela ne donne rien de plus.

    Pour l'instant je dois passer a autre chose, mais si je trouve je reviendrais l'exposer ici.

    Merci a tous de vous etes penche sur ce probleme. Si entre temps, quelqu'un a une solution, je suis de toute facon preneur.

    Cela dit, bonne annee quand meme !

  8. #8
    Membre du Club Avatar de chaying
    Inscrit en
    Mars 2007
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 84
    Points : 57
    Points
    57
    Par défaut
    C'est gérable directement en Python avec pyOpenSSL.
    La doc: http://packages.python.org/pyOpenSSL/
    Ce fut finalement la meilleure solution ! Merci

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

Discussions similaires

  1. [PHP 5.2] Probleme sortie et de re-execution d'une fonction
    Par AlternantOracle dans le forum Langage
    Réponses: 3
    Dernier message: 15/01/2010, 09h22
  2. ORA-06502 parametre de sortie pose probleme
    Par Mons dans le forum SQL
    Réponses: 33
    Dernier message: 12/05/2009, 15h37
  3. probleme d'analyse d'une sortie de smbclient
    Par alfonsos dans le forum Programmation et administration système
    Réponses: 5
    Dernier message: 04/06/2007, 10h17
  4. problemes des etats de sortis
    Par sabine74 dans le forum IHM
    Réponses: 7
    Dernier message: 26/06/2006, 22h13
  5. probleme sortie tv carte graphique
    Par Terminator dans le forum Composants
    Réponses: 8
    Dernier message: 12/10/2005, 14h01

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