p
u
b
l
i
c
i
t
é
publicité
  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 : 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 Confirmé

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

    Informations forums :
    Inscription : octobre 2008
    Messages : 2 387
    Points : 3 638
    Points
    3 638

    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
    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
    Enseignant
    Inscrit en
    juillet 2006
    Messages
    1 948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : juillet 2006
    Messages : 1 948
    Points : 3 000
    Points
    3 000

    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
    2 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : octobre 2008
    Messages : 2 387
    Points : 3 638
    Points
    3 638

    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
    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.

Discussions similaires

  1. [PHP 5.2] Probleme sortie et de re-execution d'une fonction
    Par AlternantOracle dans le forum Fonctions
    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