Précédent   Forum du club des développeurs et IT Pro > Autres langages > Python & Zope > Général Python
Général Python Forum d'entraide sur les fondamentaux du langage Python, syntaxe, POO, bibliothèque standard, ...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 30/12/2012, 15h17   #1
chaying
Futur Membre du Club
 
Inscription : mars 2007
Messages : 64
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 64
Points : 19
Points : 19
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
chaying est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2012, 15h40   #2
VinsS
Membre Expert
 
Homme
Inscription : octobre 2008
Messages : 942
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : octobre 2008
Messages : 942
Points : 1 413
Points : 1 413
Salut,

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

La doc: http://packages.python.org/pyOpenSSL/
__________________
Vincent
Oqapy . Qarte . PaQager
VinsS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2012, 16h01   #3
chaying
Futur Membre du Club
 
Inscription : mars 2007
Messages : 64
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 64
Points : 19
Points : 19
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
chaying est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2012, 17h51   #4
fred1599
Membre Expert
 
Avatar de fred1599
 
Homme Fred
Enseignant
Inscription : juillet 2006
Messages : 1 324
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 324
Points : 1 823
Points : 1 823
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)
fred1599 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2012, 06h45   #5
chaying
Futur Membre du Club
 
Inscription : mars 2007
Messages : 64
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 64
Points : 19
Points : 19
Salut !

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

Merci
chaying est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2012, 11h34   #6
VinsS
Membre Expert
 
Homme
Inscription : octobre 2008
Messages : 942
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : octobre 2008
Messages : 942
Points : 1 413
Points : 1 413
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:
Citation:
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
VinsS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 05h45   #7
chaying
Futur Membre du Club
 
Inscription : mars 2007
Messages : 64
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 64
Points : 19
Points : 19
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 !
chaying est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 08h00.


 
 
 
 
Partenaires

Hébergement Web