Script soll nur einmal bei Erststart des OS

Hi,

…ausgeführt werden. Bsp: ich habe ein python-script und eine Anwendung xbmc. Nach dem booten wird der User automatisch eingeloggt und der X-Server gestartet, dabei wird direkt xbmc per /etc/xdg/openbox/autostart aktiviert.

Jetzt möchte ich, dass das OS wenn es zum allerersten mal gestartet wird, dieses Pythonscript ausführt, beim nächsten Start des OS, soll es nicht mehr ausgeführt werden. Wie kann ich sowas unter Linux machen?

Noch als Randfrage, wie kann ich Pypy statt CPython, als Interpreter in meiner Anwendung nutzen?

Gruß XXD

Gelöst…
…hab mir sh-script gebastelt, welches per autostart gestartet wird und immer in einem Verzeichnis nach Programmen sucht -> wenn eins vorhanden -> ausführen und verschieben in einen anderen Ordner, wenn nein -> beenden.

Jetzt möchte ich, dass das OS wenn es zum allerersten mal
gestartet wird, dieses Pythonscript ausführt, beim nächsten
Start des OS, soll es nicht mehr ausgeführt werden. Wie kann
ich sowas unter Linux machen?

Meiner Meinung nach wäre die einfachste Methode folgenden Code an den Anfang des Python-Scripts zu setzen:

import os,sys
#Definiere einen Dateinamen, der angibt, ob das Script schon einmal gestartet wurde
#.at\_least\_second\_run ist dabei nur ein Beispielname. Kann also nach belieben geändert werden.
#P.S.: Wenn z.B. der ausführende Benutzer "testuser" heisst, wäre der komplette Dateiname "/home/testuser/.at\_least\_second\_run"
fname=os.path.join(os.getenv("HOME"),".at\_least\_second\_run")

#Überprüfe ob die Datei existiert. (Wenn Ja, wurde das Script schon einmal gestartet und wird sofort beendet.)
if os.path.exists(fname):
 #Beende das Script.
 sys.exit(0)

#Script wurde zuvor noch nicht gestartet.
#Erstelle die Datei, damit das Script beim nächsten ausführen sofort 
beendet wird.
open(fname).close()

#...
#Hier der ganze Rest des Scripts...
#...

Noch als Randfrage, wie kann ich Pypy statt CPython, als
Interpreter in meiner Anwendung nutzen?

Für gewöhnlich reicht es dafür aus wenn die erste Zeile im Script
#!/usr/bin/env pypy
lautet. (Vorrausgesetzt, das Script wird mit /pfad/zum/script.py o.ä. aufgerufen.)

P.S.: Sollte noch irgendetwas unklar sein, einfach nachfragen…

Hallo Isendrak,

Meiner Meinung nach wäre die einfachste Methode folgenden Code
an den Anfang des Python-Scripts zu setzen:

import os,sys
#Definiere einen Dateinamen, der angibt, ob das Script schon
einmal gestartet wurde
#.at_least_second_run ist dabei nur ein Beispielname. Kann
also nach belieben geändert werden.
#P.S.: Wenn z.B. der ausführende Benutzer „testuser“ heisst,
wäre der komplette Dateiname
„/home/testuser/.at_least_second_run“
fname=os.path.join(os.getenv(„HOME“),".at_least_second_run")

#Überprüfe ob die Datei existiert. (Wenn Ja, wurde das Script
schon einmal gestartet und wird sofort beendet.)
if os.path.exists(fname):
#Beende das Script.
sys.exit(0)

#Script wurde zuvor noch nicht gestartet.
#Erstelle die Datei, damit das Script beim nächsten ausführen
sofort
beendet wird.
open(fname).close()

#…
#Hier der ganze Rest des Scripts…
#…

Könnte man sicherlich so machen, im Prinzip macht mein Shellscript nichts anderes.

Noch als Randfrage, wie kann ich Pypy statt CPython, als
Interpreter in meiner Anwendung nutzen?

Für gewöhnlich reicht es dafür aus wenn die erste Zeile im
Script
#!/usr/bin/env pypy
lautet. (Vorrausgesetzt, das Script wird mit
/pfad/zum/script.py o.ä. aufgerufen.)

Ich glaube hier hast du mich falsch verstanden, die shebang-Zeile ist mir schon bekannt, jedoch ging es darum: Auf einem fremden Rechner weiss ich nicht, ob pypy installiert ist (wahrscheinlich eher nicht), oder nicht.
Also wie kann man abfragen: Wenn pypy vorhanden -> führe pypy als Interpreter aus, wenn nicht nimm CPython…

Gruß XXD