
Hi, ich hab hier ein kleines Problem mit subprocess.Popen, wenn ich einfach mittels cmd = ['java', '-jar', '/home/andreas/eclipse/plugin/org.eclipse.equinox.jar','-application', 'org.eclipse.and.core.antRunner' -buildfile', 'build.xml', 'build.jars'] proc = Popen(cmd) versuche den Build eines Eclipse plugins zu starten, startet Eclipse die komplette GUI. Sobald ich Popen(" ".join(cmd), shell=True) ausfuehre klappt das ganze wie erwartet. Hat jemand nen Tipp in welcher Richtung ich da suchen koennte? Gibts bei Popen noch irgendwelche Unterschiede, ausser das das ganze in einem /bin/sh gekapselt wird? Andreas -- You have a truly strong individuality.

Andreas Pakulat schrieb:
ich hab hier ein kleines Problem mit subprocess.Popen, wenn ich einfach mittels
cmd = ['java', '-jar', '/home/andreas/eclipse/plugin/org.eclipse.equinox.jar','-application', 'org.eclipse.and.core.antRunner' -buildfile', 'build.xml', 'build.jars'] proc = Popen(cmd)
versuche den Build eines Eclipse plugins zu starten, startet Eclipse die komplette GUI. Sobald ich Popen(" ".join(cmd), shell=True) ausfuehre klappt das ganze wie erwartet.
Was erwartest du denn? Was passiert wenn du statt '" ".join(cmd)' einfach 'cmd' verwendets? Sollte laut subprocess Doku auch funktionieren. Chris

Hi,
versuche den Build eines Eclipse plugins zu starten, startet Eclipse die komplette GUI. Sobald ich Popen(" ".join(cmd), shell=True) ausfuehre
Aus Sicherheitsgründen sollte man bei shell=True, nie, nie, nie einen Komando-String übergeben. außer man ist sich ganz, absolut, super sicher, das nie, jemals, irgendwie da ein Shell-Meta-Charakter hineinkommen kann. Darum einfach immer -- ohne zu überlegen -- das cmd-Array übergeben. :-)
klappt das ganze wie erwartet.
Das heißt "wie erwartet"? -- Schönen Gruß - Regards Hartmut Goebel Goebel Consult Spezialist für IT-Sicherheit in komplexen Umgebungen http://www.goebel-consult.de

On 01.04.08 19:03:55, Hartmut Goebel wrote:
Hi,
versuche den Build eines Eclipse plugins zu starten, startet Eclipse die komplette GUI. Sobald ich Popen(" ".join(cmd), shell=True) ausfuehre
Aus Sicherheitsgründen sollte man bei shell=True, nie, nie, nie einen Komando-String übergeben. außer man ist sich ganz, absolut, super sicher, das nie, jemals, irgendwie da ein Shell-Meta-Charakter hineinkommen kann.
Darum einfach immer -- ohne zu überlegen -- das cmd-Array übergeben. :-)
Klappt nicht, dann wird nur java ausgefuehrt, ohne weitere Argumente, weil ja die restlichen Eintraege als Parameter an die Shell uebergeben werden. Aber darum mache ich mir erstmal keine Gedanken, das Tool ist sowieso nur fuer den internen Gebrauch und die Argumente werden auch noch gequotet.
klappt das ganze wie erwartet.
Das heißt "wie erwartet"?
Na dass auch ohne eine Shell der antRunner laeuft und nicht die GUI startet. (antRunner arbeitet ein ant-Buildfile ab und gibt nur was auf stdout/stderr aus) Andreas -- You will hear good news from one you thought unfriendly to you.
participants (3)
-
Andreas Pakulat
-
Christopher Arndt
-
Hartmut Goebel