Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 8 sur 8
  1. #1
    Membre du Club Avatar de chaying
    Inscrit en
    mars 2007
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : mars 2007
    Messages : 83
    Points : 40
    Points
    40

    Par défaut probleme sortie subprocess

    Bonjour

    J'essaie le code suivant :

    Code :
    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 Confirmé

    Homme Profil pro
    Inscrit en
    octobre 2008
    Messages
    1 884
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : octobre 2008
    Messages : 1 884
    Points : 2 896
    Points
    2 896

    Par défaut

    Salut,

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

    La doc: http://packages.python.org/pyOpenSSL/
    Vincent
    Oqapy . Qarte . PaQager

  3. #3
    Membre du Club Avatar de chaying
    Inscrit en
    mars 2007
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : mars 2007
    Messages : 83
    Points : 40
    Points
    40

    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 Confirmé
    Avatar de fred1599
    Homme Profil pro Fred
    Enseignant
    Inscrit en
    juillet 2006
    Messages
    1 825
    Détails du profil
    Informations personnelles :
    Nom : Homme Fred
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : juillet 2006
    Messages : 1 825
    Points : 2 828
    Points
    2 828

    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
    83
    Détails du profil
    Informations forums :
    Inscription : mars 2007
    Messages : 83
    Points : 40
    Points
    40

    Par défaut

    Salut !

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

    Merci

  6. #6
    Expert Confirmé

    Homme Profil pro
    Inscrit en
    octobre 2008
    Messages
    1 884
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : octobre 2008
    Messages : 1 884
    Points : 2 896
    Points
    2 896

    Par défaut

    Ca n'a rien à voir, shell=True est à ajouter à subprocess lui-même.
    Code :
    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.
    Vincent
    Oqapy . Qarte . PaQager

  7. #7
    Membre du Club Avatar de chaying
    Inscrit en
    mars 2007
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : mars 2007
    Messages : 83
    Points : 40
    Points
    40

    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
    83
    Détails du profil
    Informations forums :
    Inscription : mars 2007
    Messages : 83
    Points : 40
    Points
    40

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •