[Python-de] subprocess.Popen mit und ohne shell

Andreas Pakulat apaku at gmx.de
Di Apr 1 17:40:31 UTC 2008


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.