Bonjour,
J'aimerais savoir à quoi sert le module subprocess?
Bonjour,
J'aimerais savoir à quoi sert le module subprocess?
Quel rapport avec ssh*?
subprocess est simplement le nouveau module à utiliser quand tu veux lancer un programme depuis ton script python –*il remplace les os.popen, par ex. Doc: http://docs.python.org/py3k/library/...ule-subprocess
et bien je voudrais faire un script qui m'établisse une connexion en ssh vers un serveur en utilisant se subprocess....J'ai mon professeur qui nous a refilé un bout de programme mais je n'y comprend rien:
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 import sys import os from subprocess import * print "## subprocess call" status = call(["ssh", "localhost", "pwd"]) print "status =", status print "## ssh + system using subprocess Popen" proc = Popen(["ssh", "localhost", "ls", "xxx"]) status = os.waitpid(proc.pid, 0)[1] print "status =", status print "## ssh + system using subprocess Popen" proc = Popen(["ssh", "localhost", "echo", "${PATH}"]) status = os.waitpid(proc.pid, 0)[1] print "status =", status print "## ssh + system in shell using subprocess Popen" proc = Popen("ssh" + " localhost" + " echo ${PATH}", shell=True) status = os.waitpid(proc.pid, 0)[1] print "status =", status print "## ssh + backquote using subprocess Popen" proc = Popen(["ssh", "localhost", "ls", "-l", "-d", "bin", "xxx"], stdout=PIPE, stderr=PIPE) data = proc.communicate() print "status =", proc.returncode print "# out: " print data[0], print "# err:" print data[1], print "# end"
Ce code lance plusieurs fois de suite ssh, soit via call(), soit via la création d’un objet-processus Popen, qui viennent tous deux de subprocess.
Puis il attend que le process se termine (call() est bloquantes, et sinon via os.waitpid(), ou subprocess.Popen.communicate()), et affiche son code de retour.
Voilà, en gros… Je te conseille encore une fois vivement la doc de subprocess pour les détails (http://docs.python.org/py3k/library/...ule-subprocess) :p
PS*: D’un point de vue pédagodique, il eut été préférable à mon humble avis de ne pas importer tout le contenu de subprocess dans l’espace local, ç’aurait été plus clair (en plus, ce n’est pas trop conseillé par les bonnes pratiques de Python, me semble-t-il…)*:
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 import sys import os import subprocess print "## subprocess call" status = subprocess.call(["ssh", "localhost", "pwd"]) print "status =", status print "## ssh + system using subprocess Popen" proc = subprocess.Popen(["ssh", "localhost", "ls", "xxx"]) status = os.waitpid(proc.pid, 0)[1] print "status =", status print "## ssh + system using subprocess Popen" proc = subprocess.Popen(["ssh", "localhost", "echo", "${PATH}"]) status = os.waitpid(proc.pid, 0)[1] print "status =", status print "## ssh + system in shell using subprocess Popen" proc = subprocess.Popen("ssh" + " localhost" + " echo ${PATH}", shell=True) status = os.waitpid(proc.pid, 0)[1] print "status =", status print "## ssh + backquote using subprocess Popen" proc = subprocess.Popen(["ssh", "localhost", "ls", "-l", "-d", "bin", "xxx"], stdout=PIPE, stderr=PIPE) data = proc.communicate() print "status =", proc.returncode print "# out: " print data[0], print "# err:" print data[1], print "# end"
bon j'ai essayé de lire la doc concernant le subprocess mais la seule chose que j'ai compris c'est qu'il permet d'appeller des commandes ou programmes externes mais je sais toujours pas comment accéder à un serveur à distance afin de copier des fichiers![]()
bon je crois que j'ai trouvé la solution à mon probleme:
sauf que il y a plusieurs versions et j'aimerais récupérer la dernière version
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 ######################## #!/usr/bin/env python # -*- coding: utf-8 -*- # vim: set fileencoding=utf-8 ######################## import sys import os from subprocess import * path_file = "chemin du fichier voulu" print "## ssh + backquote using subprocess Popen" proc = Popen(["ssh", "localhost", "ls",path_file], stdout=PIPE, stderr=PIPE) data = proc.communicate() print "status =", proc.returncode print "# out: " print data[0], print "# err:" print data[1], print "# end"
c'est pas facile tout ça![]()
Partager