NEWS
Blockly und exec
-
@andreb sagte in Blockly und exec:
aber mehr tut sich nicht
was soll denn da passieren?
du hast ihm ja nichts gesagt
die klammer ist ja leer -
Sorry wenn ich doof frage aber der befeht steht ja drin und klammern sehe ich im Blockly nicht nur in der JS Ansicht.
machen soll er ja "sudo /home/pi/uhubclt -l 2 -a 0"
-
@andreb sagte in Blockly und exec:
machen soll er ja "sudo /home/pi/uhubclt -l 2 -a 0"
das macht er ja auch - im angegebenen Verzeichnis
Was erwartest du denn dann?
-
Macht er nicht, wenn ich es auf der Console aufrufe das schaltet er die USBPower aus macht er über exec aber nicht und ich bekomme ja auch keine rückgabewerte
-
@andreb sagte in Blockly und exec:
ch bekomme ja auch keine rückgabewerte
die forderst du ja auch nicht an.
Variable 'result' anlegen, dann mit dieser weiterarbeiten.
zb. erst einmal debug-Baustein zum anzeigen von result@andreb sagte in Blockly und exec:
Macht er nicht, wenn ich es auf der Console aufrufe das schaltet er die USBPower aus macht er über exec aber nicht
wahrscheinlich darf der User ioBroker das nicht
-
@andreb sagte: bekomme ja auch keine rückgabewerte
exec() funktioniert und gibt auch das Ergebnis in der lokalen Variablen result zurück.
-
probiere ich mal, den gedanken mit den berechtigungen hatte ich auch schon ging aber davon aus das der iobroker sudo kann.
-
Ich klinke mich mal ein da ich ein ähnliches Problem habe.
Und zwar möchte ich bei einer Störung, per exec einen Adapter neu starten.
Wenn ich "iobroker restart sonos.0" in der Konsole direkt unter Windows eingebe, funktioniert der Befehl.
Wie kann ich den auch durch JavaScript ausführen lassen?javascript.0 2021-03-04 11:05:34.367 warn (6216) script.js.Xiaomi.SonosDurchBWMschalten: exec: iobroker restart sonos.0 javascript.0 2021-03-04 11:05:34.416 warn (6216) script.js.Xiaomi.SonosDurchBWMschalten: *** Error. Please start the ioBroker commandline with the correct Windows startmenu shortcut. Aborting...
-
Ich habe einen Blog-Eintrag gefunden in dem jemand dem iobroker user sudo Rechte verleiht.
Mit dem Hinweis dass dies nicht der sicherste Weg sei.Was spricht denn dagegen, dem iobroker sudo zu verleihen?
Würde das hier bei meiner Fehlermeldung überhaupt helfen? -
-
@ente34
Den Post habe ich mir angesehen.
Leider läuft ioBroker bei mir unter Windows, sodass ich hier andere Befehle und Verzeichnisse nutzen muss.
(Which scp funktioniert z.b. nicht)
Diese kenn ich aber nicht. -
@aleks-83 Du meinstest nicht zufällig
where scp
?which
ist ein Linux-Befehl.Bei mir geht's einwandfrei unter Windows:
exec("ping 127.0.0.1", (err, stdout, stderr) => { log(`err: ${err}`); log(`stdout: ${stdout}`); log(`stderr: ${stderr}`); })
Log:
javascript.0 2021-03-15 16:06:52.603 info Minimum = 0ms, Maximum = 0ms, Mittelwert = 0ms javascript.0 2021-03-15 16:06:52.603 info Ca. Zeitangaben in Millisek.: javascript.0 2021-03-15 16:06:52.603 info (0% Verlust), javascript.0 2021-03-15 16:06:52.603 info Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0 javascript.0 2021-03-15 16:06:52.603 info Ping-Statistik f�r 127.0.0.1: javascript.0 2021-03-15 16:06:52.603 info javascript.0 2021-03-15 16:06:52.603 info Antwort von 127.0.0.1: Bytes=32 Zeit<1ms TTL=128 javascript.0 2021-03-15 16:06:52.603 info Antwort von 127.0.0.1: Bytes=32 Zeit<1ms TTL=128 javascript.0 2021-03-15 16:06:52.603 info Antwort von 127.0.0.1: Bytes=32 Zeit<1ms TTL=128 javascript.0 2021-03-15 16:06:52.603 info Antwort von 127.0.0.1: Bytes=32 Zeit<1ms TTL=128 javascript.0 2021-03-15 16:06:52.603 info Ping wird ausgef�hrt f�r 127.0.0.1 mit 32 Bytes Daten:
-
@aleks-83 sagte in Blockly und exec:
Und zwar möchte ich bei einer Störung, per exec einen Adapter neu starten.
Das geht doch mit dem Datenpunkt system.adapter.sonos.0.alive. Wozu da ein exec benutzen?
-
Oh cool. Das wusste ich gar nicht.
Wieder was gelernt. Danke.Das löst zwar mein aktuelles Problem, aber wenn ich irgendwann mal wieder exec() ausführen will, habe ich das eigentliche Problem immer noch.
Obwohl @AlCalzone mir ja schon einen anderen Tipp gegeben hat um exec() mit ioBroker Befehlen auszuführen.Danke euch.
-
@aleks-83 sagte in Blockly und exec:
aber wenn ich irgendwann mal wieder exec() ausführen will, habe ich das eigentliche Problem immer noch.
Nein, nur wenn du
iobroker
-Befehle ausführen willst (was eigentlich nicht nötig sein dürfte).