Betriebssystembefehle

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
freehand

Betriebssystembefehle

Beitragvon freehand » Dienstag 18. Mai 2004, 15:31

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
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Dienstag 18. Mai 2004, 16:36

Hi freehand,

jo da gibts jede Menge, schau mal ins Modul os

Gruß

Dookie
Gast

Beitragvon Gast » Montag 24. Mai 2004, 09:05

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?
Benutzeravatar
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

Beitragvon hans » Montag 24. Mai 2004, 21:20

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
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Montag 24. Mai 2004, 22:21

Hi,

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


Gruß

Dookie
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Dienstag 25. Mai 2004, 13:46

Wie wärs mit

Code: Alles auswählen

os.system(befehl)
alternativ (mit stdInOut umleitung) auch die popen befehle aus os.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
freehand

Beitragvon freehand » Donnerstag 27. Mai 2004, 14:24

/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))
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Donnerstag 27. Mai 2004, 20:26

Hat dein Python interpreter auch die richtigen rechte dazu? (Als was für ein user läuft der denn?)
My god, it's full of CARs! | Leonidasvoice vs Modvoice
freehand

Beitragvon freehand » Freitag 28. Mai 2004, 08:43

Wo kann ich das denn sehen?
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Freitag 28. Mai 2004, 13:28

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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder