Python Python-Script läuft unter rc.local nicht

#Base

Banned
Registriert
März 2021
Beiträge
9
Hallo!
Mein Python-Script erstellt u.a. Dateien, die im home-Verzeichnis meines Raspberry`s abgelegt werden:

Code:
open(self.dateiname, 'w').write("helloWorld")

Führe ich mein Script über die Konsole aus (python3 test.py), dann funktioniert es.

Binde ich das Script in rc.local ein, starte ich den Pi neu und rufe ich "systemctl status rc.local" auf, so erhalte ich folgende Fehlermeldung:

open(self.dateiname, 'w').write("helloWorld")

Permission denied: 'meineDatei.txt'

Die Konfiguration in rc.local sieht wie folgt aus:

Code:
sudo -H -u pi /usr/bin/python3 /home/test/test.py

Es ist der gleiche User ("pi") wie in der Konsole.

Der Ordner "test" hat die Rechte 777 und die Datei test.py ebenfalls 777.

Warum funktioniert es trotzdem nicht??
 
Benutzt du einen relativen Pfad für 'meineDatei.txt'?
Wenn ja, dann versuche es mal mit einem absoluten Pfad.
 
  • Gefällt mir
Reaktionen: Der Lord und maxpayne80
  • ZielVerzeichnis existiert?
  • Zielverzeichnis für "pi" schreibbar?
  • Script hat "x" flag für mind. "pi" user ?

@Argead

stimmt, kann sein, dass mit relativen Pfad versucht wird, im home des ausführenden user von rc ( root ?! ),
was "pi" wohl nicht darf ( weiß gerade dabei garnicht, ob root auf nem raspberry überhaupt ein home hat, das Ergebnis wäre aber dasselbe )
 
Als Speicherort habe ich weder einen absoluten noch einen relativen Pfad angegeben, sondern nur den Dateinamen selbst.

Führe ich den Code manuell in der Konsole aus, dann werden die Dateien dorthin geschrieben, wo auch das Script test.py liegt.

"Zielverzeichnis für "pi" schreibbar?"
Der Ordner hat das Recht 777. Reicht das nicht aus?
 
#Base schrieb:
Als Speicherort habe ich weder einen absoluten noch einen relativen Pfad angegeben, sondern nur den Dateinamen selbst.
Also einen relativen Pfad!
 
  • Gefällt mir
Reaktionen: Hayda Ministral, breedmaster, spcqike und eine weitere Person
Führst du das Skript aus, läuft es im Kontext deines Users, bei rc.local idR im Kontext von root. Müsste ich weiter raten, hat im jeweiligen Home-Verzeichnis nur der jeweilige User Berechtigungen.
 
versuch doch einfach mal vor dem Ausführen des Skripts den Homeordner zu betreten.

Code:
cd /home/pi/test/ && sudo -H -u pi /usr/bin/python3 /home/pi/test/test.py

PS: ich glaube du hast einen Fehler in deinem Pfad. Oder liegt das Skript wirklich im Home-Ordner vom User "test"?
 
Zurück
Oben