Programm mit Parametern aufrufen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
samy-delux
User
Beiträge: 44
Registriert: Donnerstag 26. April 2007, 19:23

Programm mit Parametern aufrufen

Beitragvon samy-delux » Mittwoch 4. Juli 2007, 16:03

Hey Leute,

Mir stellen sich gerade 2 Fragen:

1. Wie kann ich folgendes Bash Skript in Python nachbauen:
[code=]#!/bin/sh

/usr/bin/programm "$@"[/code]

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!!!
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Beitragvon veers » Mittwoch 4. Juli 2007, 16:35

1. subprocess.call(['/usr/bin/programm'] + sys.argv[1:])
Lies doch einfach selber die Doku dazu...
2. py2exe
BlackJack

Beitragvon BlackJack » Mittwoch 4. Juli 2007, 16:37

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

Beitragvon Leonidas » Samstag 7. Juli 2007, 17:28

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?
My god, it's full of CARs! | Leonidasvoice vs Modvoice
samy-delux
User
Beiträge: 44
Registriert: Donnerstag 26. April 2007, 19:23

Beitragvon samy-delux » Donnerstag 12. Juli 2007, 16:06

Weil das setuid-bit nur bei Binaries funktioniert!
Deshalb kann ich Shebang nicht verwenden!
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Beitragvon Rebecca » Donnerstag 12. Juli 2007, 16:59

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...

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder