Seite 1 von 1

Betriebssystembefehle

Verfasst: Dienstag 18. Mai 2004, 15:31
von freehand
Hallo,

in PHP gibt es funktionen mit denen man Betriebssystembefehle absetzen kann (exec(),passthru()...).

Gibt es so etwas ähnliches auch in Python? Ich habe dazu leider nichts gefunden. Ein kleiner Tip wäre nett.

Gruß freehand

Verfasst: Dienstag 18. Mai 2004, 16:36
von Dookie
Hi freehand,

jo da gibts jede Menge, schau mal ins Modul os

Gruß

Dookie

Verfasst: Montag 24. Mai 2004, 09:05
von Gast
Hallo,

ich habe jetzt z.B. folgendes gemacht:

Code: Alles auswählen

os.execv('/usr/lib/java/bin/', ['-jar', '-Djava.awt.headless=true', '../batik-1.5/batik-rasterizer.jar', '-m image/jpeg', '-q 0.99', '../batik-1.5/svg1.svg'])
Das sollte nun Java starten und die mit den Argumenten auführen...

Ich bekomme aber immer diese Fehlermeldung:

OSError: [Errno 13] Permission denied

Muss ich da noch was Einstellen damit Python sowas überhaupt darf?

Verfasst: Montag 24. Mai 2004, 21:20
von hans
Ich würde eher zu popen(), popen2(), etc. aus auch aus dem Modul OS zurückgreifen. Wenn dann Fehler ausgegeben werden, kann man diese ausgeben.

Permission denied deutet aber darauf hin, dass du wohl nicht ausreichende Berechtigungen hast um den Befehl auszuführen. Kannst du den Befehl

Code: Alles auswählen

/usr/lib/java/bin/', ['-jar', '-Djava.awt.headless=true', '../batik-1.5/batik-rasterizer.jar', '-m image/jpeg', '-q 0.99', '../batik-1.5/svg1.svg']
denn direkt in einer Shell absetzen? Führst du das ganze etwa als CGI Script aus?

Hans

Verfasst: Montag 24. Mai 2004, 22:21
von Dookie
Hi,

/usr/lib/java/bin/ ist sicher keine ausführbare Datei sondern ein Verzeichnis!


Gruß

Dookie

Verfasst: Dienstag 25. Mai 2004, 13:46
von Leonidas
Wie wärs mit

Code: Alles auswählen

os.system(befehl)
alternativ (mit stdInOut umleitung) auch die popen befehle aus os.

Verfasst: Donnerstag 27. Mai 2004, 14:24
von freehand
/usr/lib/java/bin/ ist sicher keine ausführbare Datei sondern ein Verzeichnis
:oops: das stimmt, habe hier was falsches gepostet. ich meinte /usr/lib/java/bin/java...

aber java läßt sich wohl nicht über cgi starten. zumindst. findet er bei mir seine "umgebung" nicht... deshalb starte ich jetzt ein bash script.

aber egal was für einen befehl ich benutze, ich bekommte immer "Permission denied".

es klappt jetzt bei mir nur so:

Code: Alles auswählen

if os.fork()==0:
  os.execv('/bin/bash', ('','/home/www/web8/html/session/%s_svg2jpg.sh'%sessionid))

Verfasst: Donnerstag 27. Mai 2004, 20:26
von Leonidas
Hat dein Python interpreter auch die richtigen rechte dazu? (Als was für ein user läuft der denn?)

Verfasst: Freitag 28. Mai 2004, 08:43
von freehand
Wo kann ich das denn sehen?

Verfasst: Freitag 28. Mai 2004, 13:28
von Leonidas
Wenn es als CGI/mod_python programm im kontext deines Webservers läuft dann musst du schauen als was für ein User dein Apache läuft und dann die berechtigungen anpassen.