NEWS
Ausführen von Befehlen mit exec
-
Hallo zusammen,
iIch versuche verzweifelt einen Consolen Befehl auf dem Raspberry pi abzusetzen, allerdings ohne Erfolg.
Das einzige was ich will, ist das mein server per WoL geweckt wird. Via ssh kein Problem.
Ich habe etherwake installiert. In der Console kann ich dann via
sudo etherwake -i eth0 aa:bb:cc:dd:ee:ffden Server starten.
Bei blockly sieht mein "Skript" einfach nur so aus:
exec('etherwake -i eth0 aa:bb:cc:dd:ee:ff'); console.debug("exec: " + 'etherwake -i eth0 aa:bb:cc:dd:ee:ff');
und in Java so:
exec('etherwake -i eth0 aa:bb:cc:dd:ee:ff');
ich habs mit und ohne sudo versucht. Im Adapter ist der notwendige Haken aus gesetzt.

Ich weiß gerade echt nicht, woran das noch liegen kann...
Habt ihr eine Idee?!
-
@Nas007 said in Ausführen von Befehlen mit exec:
Habt ihr eine Idee?!
Unzureichende Berechtigungen zur Ausführung vvielleicht?
Welche Berechtigungen unter welchem User hat das Skript? -
Lege die Variablen so wie im Screenshot zu sehen an, dann bekommst du die Informationen im log

Der Befehl wird aber vermutlich vom iobroker User abgesetzt, und diesem fehlen die nötigen Rechte.
Du kannst aber auch einfach direkt Javascript benutzen, Wake on Lan ist im Javascript Adapter default mit dabei und aktiv einfach mal im Forum für Script Beispiele suchen.
-
Lege die Variablen so wie im Screenshot zu sehen an, dann bekommst du die Informationen im log

Der Befehl wird aber vermutlich vom iobroker User abgesetzt, und diesem fehlen die nötigen Rechte.
Du kannst aber auch einfach direkt Javascript benutzen, Wake on Lan ist im Javascript Adapter default mit dabei und aktiv einfach mal im Forum für Script Beispiele suchen.
@TeNNo2k5 danke für den Tipp. Ich würde es gerne so umsetzen.
Das hier kam raus:
javascript.0 2020-03-07 17:00:36.825 warn (10083) script.js.common.Sonstiges.tet_wol2: {'killed':false,'code':1,'signal':null,'cmd':'sudo etherwake -i eth0 00:08:9B:E5:8A:BE'} javascript.0 2020-03-07 17:00:36.824 warn (10083) script.js.common.Sonstiges.tet_wol2: Wir gehen davon aus, dass der lokale Systemadministrator Ihnen die Regeln erklärt hat. Normalerweise läuft es auf drei Regeln hinaus: #1) Respektier javascript.0 2020-03-07 17:00:36.824 info (10083) script.js.common.Sonstiges.tet_wol2: undefined javascript.0 2020-03-07 17:00:36.823 info (10083) script.js.common.Sonstiges.tet_wol2:Das hört sich so an, als ob die Berechtigung fehlen. Wie kann ich diese denn Zuweisen?
-
Hallo zusammen,
iIch versuche verzweifelt einen Consolen Befehl auf dem Raspberry pi abzusetzen, allerdings ohne Erfolg.
Das einzige was ich will, ist das mein server per WoL geweckt wird. Via ssh kein Problem.
Ich habe etherwake installiert. In der Console kann ich dann via
sudo etherwake -i eth0 aa:bb:cc:dd:ee:ffden Server starten.
Bei blockly sieht mein "Skript" einfach nur so aus:
exec('etherwake -i eth0 aa:bb:cc:dd:ee:ff'); console.debug("exec: " + 'etherwake -i eth0 aa:bb:cc:dd:ee:ff');
und in Java so:
exec('etherwake -i eth0 aa:bb:cc:dd:ee:ff');
ich habs mit und ohne sudo versucht. Im Adapter ist der notwendige Haken aus gesetzt.

Ich weiß gerade echt nicht, woran das noch liegen kann...
Habt ihr eine Idee?!
-
Der iobroker User ist bestimmt nicht ohne Grund Rechte Technisch eingeschränkt, ich würde da lieber nicht zu viel an den Rechten rumschrauben.
Wenn ich raten soll denke ich das es am sudo liegt, wenn du unbedingt diese WOL Variante nutzen möchtest kannst du probieren mit visudo deinen Befehl für den iobroker User ohne Passwort Eingabe freizugeben: https://kofler.info/sudo-ohne-passwort/
PS: Mit "whereis etherwake" bekomsmt du den kompletten Programmpfad..
Edit: Während ich den Text verfasst habe, hat Glasfaser schon die Antwort verlinkt :blush:, hatte wohl richtig geraten.
-
@Glasfaser und @TeNNo2k5
Vielen dank für die Hilfe.@TeNNo2k5
Wie würde es denn per Blockly mit dem Wake on Lan ist im Javascript Adapter funktionieren. Ich habe da eben nichts gefunden beim suchen.Ich habe jetzt das gefunden. Das Skript verwendet die mitgebrachte bib:
https://forum.iobroker.net/topic/8018/gelöst-wol-als-magicpaket-an-nas-per-blockly-script/13Das hat als in java auch funktioniert.
Wie kann ich das denn in Blockly nachbauen? Mir fehlt bspw. diese require also Befehl.
-
@Glasfaser und @TeNNo2k5
Vielen dank für die Hilfe.@TeNNo2k5
Wie würde es denn per Blockly mit dem Wake on Lan ist im Javascript Adapter funktionieren. Ich habe da eben nichts gefunden beim suchen.Ich habe jetzt das gefunden. Das Skript verwendet die mitgebrachte bib:
https://forum.iobroker.net/topic/8018/gelöst-wol-als-magicpaket-an-nas-per-blockly-script/13Das hat als in java auch funktioniert.
Wie kann ich das denn in Blockly nachbauen? Mir fehlt bspw. diese require also Befehl.
-
@Nas007 said in Ausführen von Befehlen mit exec:
Habt ihr eine Idee?!
Unzureichende Berechtigungen zur Ausführung vvielleicht?
Welche Berechtigungen unter welchem User hat das Skript?@hans_999 sagte in Ausführen von Befehlen mit exec:
Welche Berechtigungen unter welchem User hat das Skript?
Das läuft als User
iobroker. Wenn das Kommando auf der Kommandozeile root-Rechte benötigt, muss- der Befehl mittels
sudoausgeführt werden und - dem User erlaubt werden,
etherwakeals Root auszuführen.
Letzteres wurde hier im Forum schon mehrfach beschrieben, wie es geht.
Edit: mist, zu langsam :duck:
- der Befehl mittels
-
@hans_999 sagte in Ausführen von Befehlen mit exec:
Welche Berechtigungen unter welchem User hat das Skript?
Das läuft als User
iobroker. Wenn das Kommando auf der Kommandozeile root-Rechte benötigt, muss- der Befehl mittels
sudoausgeführt werden und - dem User erlaubt werden,
etherwakeals Root auszuführen.
Letzteres wurde hier im Forum schon mehrfach beschrieben, wie es geht.
Edit: mist, zu langsam :duck:
@AlCalzone sagte in Ausführen von Befehlen mit exec:
Edit: mist, zu langsam :duck:
Echt süß die Ente :sunglasses:
- der Befehl mittels
-
@Nas007 sagte:
Wie würde es denn per Blockly mit dem Wake on Lan ist im Javascript Adapter funktionieren.
Die Funktion require('wake_on_lan') gibt es in Blockly nicht.
@paul53 sagte in Ausführen von Befehlen mit exec:
@Nas007 sagte:
Wie würde es denn per Blockly mit dem Wake on Lan ist im Javascript Adapter funktionieren.
Die Funktion require('wake_on_lan') gibt es in Blockly nicht.
Man könnte die wake on lan Funktion, per Javascript Funktions Block laden, aber es muss ja nicht immer alles zwingend via Blockly gelöst werden.
-
@paul53 sagte in Ausführen von Befehlen mit exec:
@Nas007 sagte:
Wie würde es denn per Blockly mit dem Wake on Lan ist im Javascript Adapter funktionieren.
Die Funktion require('wake_on_lan') gibt es in Blockly nicht.
Man könnte die wake on lan Funktion, per Javascript Funktions Block laden, aber es muss ja nicht immer alles zwingend via Blockly gelöst werden.