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:

Code: Alles auswählen

#!/bin/sh

/usr/bin/programm "$@"
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...