Seite 1 von 1
Programm mit Parametern aufrufen
Verfasst: Mittwoch 4. Juli 2007, 16:03
von samy-delux
Hey Leute,
Mir stellen sich gerade 2 Fragen:
1. Wie kann ich folgendes Bash Skript in Python nachbauen:
2. Wie kann ich ein Python Skript kompilieren, so dass ich es einfach per "./skript" aufrufen kann. Ich weiß dass das per Shebang geht, aber wie geht es ohne?
Vielen Dank schonmal!!!
Verfasst: Mittwoch 4. Juli 2007, 16:35
von veers
1. subprocess.call(['/usr/bin/programm'] + sys.argv[1:])
Lies doch einfach selber die Doku dazu...
2. py2exe
Verfasst: Mittwoch 4. Juli 2007, 16:37
von BlackJack
Zu 1:
Code: Alles auswählen
#!/usr/bin/env python
import sys
from subprocess import call
call(['/bin/ls'] + sys.argv[1:])
Zu 2: Im Grunde gar nicht. Irgendwie muss das System ja wissen, womit die Datei ausgeführt werden soll.
Du könntest dem `binfmt`-Kernelmodul *.pyc-Dateien beibringen. Zumindest unter Ubuntu 7.04 scheint das schon der Fall zu sein. Da kann ich *.pyc-Dateien ausführbar machen und einfach wie Programme starten.
Verfasst: Samstag 7. Juli 2007, 17:28
von Leonidas
veers hat geschrieben:2. py2exe
Der OP hat von Shebang gesprochen, also muss es wohl um ein Unixoides System gehen, da hilft py2exe gar nicht. Da müsste eher der Installer oder cx_Freeze ran. Wobei aber die Frage bleibt: warum, wenn es doch auch über die Shebang geht?
Verfasst: Donnerstag 12. Juli 2007, 16:06
von samy-delux
Weil das setuid-bit nur bei Binaries funktioniert!
Deshalb kann ich Shebang nicht verwenden!
Verfasst: Donnerstag 12. Juli 2007, 16:59
von Rebecca
In dem Fall helfen auch ein paar Zeilen C:
Code: Alles auswählen
#include <unistd.h>
int main (int argc, char **argv)
{
int ret;
ret = execl("/usr/bin/python", "python", "/home/rbreu/test.py", 0);
if (ret) perror();
}
Das Ganze mit
gcc meinequelle.c -o meinbinary compilieren und fuer dieses Programm das setuid-Flag setzten...