NEWS
Exec führt .py nicht aus
-
Hallo zusammen,
ich bin neu hier und habe wenig Erfahrung mit IoBroker.
Ich möchte über den IoBroker ein Pythonprogramm auf meinem Raspberry ausführen. Im Terminal funktioniert auch alles.
Ich habe es mit exec über Blockly und Javascript probiert.sudo reboot funktioniert , das test.py führt er aber nicht aus
/home/pi/test.py
python /home/pi/test.py
sudo python /home/pi/test.py
./home/pi/test.pyhabe ich alles versucht, hat nichts gebracht. Berechtigung für die Datei habe ich geändert. hab es auch mit /home/iobroker und /opt als Verzeichnisse probiert.
Ich habe schon viele ähnliche Forenbeiträge gesehen, hat mich leider auch nicht weitergebracht.
Bin so langsam echt ratlos. Für Ideen wäre ich sehr dankbar -
@kücken Hast Du im Javascript Adapter das Ausführen von "exec" Kommandos erlaubt?
-
@mickym Ja der Haken ist gesetzt
-
ioBroker läuft als Benutzer iobroker - jedenfalls bei mir.
Ich nehme an der hat keine Berechtigungen auf den Pfad. -
Der user iobroker ist per sudoers eingeschränkt, außerhalb von /opt/iobroker darf der nicht viel.
-
@kücken Woran merkst Du denn, dass das script nicht funktioniert? an der Ausgabe?
Ich hab auf meinem System den iobroker in die Gruppe pi aufgenommen und ein test.py in Homeverzeichnis des pi installiert.
Da ich mich mit Blockly zuwenig mit den Exec-Ausgaben auskenne - habe ich das mit NodeRed versucht und das funktioniert wunderbar:
Also behaupte ich mal - dass es eigentlich keine Hindernisse auf Systemebene geben sollte - da auch der NodeRed Adapter unter dem Benutzer iobroker arbeitet.
-
@BananaJoe @Thomas-Braun @mickym
Das Blockly sieht so aus, falls das hilft:'python /home/iobroker/led_strip.py' schaltet eine Lampe an, zumindest wenn es im Terminal des Raspberry ausgeführt wird. Über das Blockly funktioniert es allerdings nicht.
Wenn ich stattdessen das ganze im Verzeichnis /home/opt/iobroker/led_strip.py ausführe, passiert trotzdem nichts. Muss ich dem Benutzer iobroker den Pfad zusätzlich freigeben?
-
@kücken Versuch doch mal im Terminalfenster - über die Shell mit dem iobroker User zu arbeiten.
Geht es denn im Terminal - wenn Du
sudo -su iobroker python led_strip.py
machst - nicht das der iobroker innerhalb des Skripts keine Berechtigung hat.
Ich würde auch mal wie ich es gemacht haben ein Python skript mit einer simplen Ausgabe versuchen - damit Du siehst ob es ausgeführt wird und ob nicht nur der Befehl zum Schalten der Lampe in dem Skript nicht ausgeführt wird.
-
@kücken Hi, evtl. den ganzen Pfad zu python angeben:
/usr/bin/python /home/pi/test.py
VG -
Meine Python Skripte liegen unter /usr/local/bin/ und die kann ich ohne Probleme mit IoBroker ausführen.
-
Danke für den Tipp, tatsächlich kann ich das Skript als iobroker User im Terminal nicht ausführen.
Wie erteile ich denn die Berechtigung? -
@kücken sagte in Exec führt .py nicht aus:
Danke für den Tipp, tatsächlich kann ich das Skript als iobroker User im Terminal nicht ausführen.
Wie erteile ich denn die Berechtigung?wie lautet den die Berechtigung deiner Datei.
In der Oktalnotation sollten die ersten beiden (von 3) Ziffern 7 lauten
Die mittlere 7 erlaubt auch Mitgliedern einer Gruppe das ausführen einer Datei
https://wiki.ubuntuusers.de/chmod/ -
Hallo
sry das ich das thema nochmal raufhole aber ich habe auch ein Python Script welches ich im iobroker ausführen will.
Da ich absoluter noob bin und mir schon stunden um die ohren geschlagen habe muss ich nochmal fragen.
Ich nehme die Script Datei und kopiere sie über Putty von meinem PC in den Ordner auf dem Raspi
/home/pi/und dann schreibe ich den Node Red Befehle so wie in deinem Bild ?
danke
-
@amutep Nein nicht in das homeverzeichnis des pi, sondern in das homeverzeichnis des <Benutzers iobroker. Also in /home/iobroker
-
das ist sicherlich eine berechtigungssache
zum testen warum das nicht funktioniert kannst du folgendes tun
auf der console:sudo -u iobroker bash cd /opt/iobroker
mit der ersten zeile wirst du zum user iobroker
mit der 2.zeile wechselst du in das stammverzeichnis von iobroker
als 3. kannst du dann deinen befehl eintippen zum starten des programms- entweder darf oder sieht iobroker python nicht
- entweder darf oder sieht iobroker das skript nicht
ich tippe auf letzteres, aber das siehst du dann an der fehlermeldung
besser wäre das skript irgendwo in das verzeichnis von iobroker zu kopieren. bspw /opt/iobroker/pythonscripts
und dann den owner des skripts auf iobroker ändern mit chownoder
der owner der datei bleibt bei dir dein user ist in der benutzergruppe iobroker und du passt die dateiattribute auf 775 an.Nachtrag
Wenn ihr schon alte Threads wieder ausgrabt, warum lest ihr den dann nicht durch? -
ok dann versuch das mit meinem halbwissen mal zu bewerkstelligen
@OliverIO
auch dir danke, ich habe diesen thread ca 50x mal gelesen und wie ich geschrieben habe nur bahnhof verstanden und darum hab ich das thema nochmals ausgegraben...habe zwar immer noch nicht alles verstanden aber learning by doing
-
dann wäre es gut gewesen aufzuschreiben was du konkret nicht verstanden hast, bzw. wo es fehlermeldungen gegeben hat.
der test auf der shell steht schon beschrieben und auch das thema mit den dateiattributen
zum thema berechtigungen kannst du dir diesen artikel durchlesen
https://wiki.ubuntuusers.de/Rechte/bei ubuntu nicht wundern, das passt zu 99% auch auf raspi, da beide betriebssysteme von debian abstammen