NEWS
[OFFEN]* [Blockly] EXEC CP klappt nicht
-
Hallo zusammen,
bin neu hier. Ich versuche mich an einem Blockly Script, um eine Datei zu kopieren.iobroker ist in Docker auf einem RaspberryPi4 installiert.
EXEC ist erlaubt.Das Skript:
on({id: '0_userdata.0.evcc_yaml', change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("0_userdata.0.evcc_yaml").val == 'NORMAL') { exec('sudo cp /var/lib/docker/volumes/EVCC/_data/evcc.normal.yaml /var/lib/docker/volumes/EVCC/_data/evcc.test.yaml'); console.error("exec: " + 'sudo cp /var/lib/docker/volumes/EVCC/_data/evcc.normal.yaml /var/lib/docker/volumes/EVCC/_data/evcc.test.yaml'); } if (getState("0_userdata.0.evcc_yaml").val == 'GRENZE') { exec('sudo cp /var/lib/docker/volumes/EVCC/_data/evcc.grenze70.yaml /var/lib/docker/volumes/EVCC/_data/evcc.yaml'); console.error("exec: " + 'sudo cp /var/lib/docker/volumes/EVCC/_data/evcc.grenze70.yaml /var/lib/docker/volumes/EVCC/_data/evcc.yaml'); } });
Die Fehlermeldung:
avascript.0 2021-03-29 21:25:11.249 error (10095) script.js.common.EVCC_YAML: exec: sudo cp /var/lib/docker/volumes/EVCC/_data/evcc.grenze70.yaml /var/lib/docker/volumes/EVCC/_data/evcc.yaml
Ich vermute, dass es an der Berechtigung liegen kann und habe der Zieldatei chmod 777 gegeben.
Bringt nichts.Wie kann ich mehr Infos aus dem Log kriegen?
MfG
gyros -
@gyroslav Der user 'iobroker' darf 'nix' außerhalb von /opt/iobroker.
Da kannste chmodden bis zum St. Nimmerleins-Tag.777 ist sowieso mit der der ganz groben "Kelle der unwissenden Verzweiflung" verteilt. Und eigentlich IMMER falsch.
Was willst du da eigentlich anstellen?
-
ich will per Knopfdruck aus JARVIS heraus verschiedene Configs für EVCC aktivieren und eigentlich anschließend den EVCC-Container neu starten, damit die Config zieht.
Welche anderen Möglichkeiten gib es denn dazu?
-
@gyroslav Keine Ahnung was EVCC ist oder macht.
-
@thomas-braun sagte in [OFFEN]* [Blockly] EXEC CP klappt nicht:
@gyroslav Keine Ahnung was EVCC ist oder macht.
Bestimmt das “solar powered car charging”
Oder den Aktienmarkt beeinflussen
-
Wallbox steuern nach PV-Überschluss... aber ist ja auch egal. Ich will per Skript eine Datei kopieren!
-
@gyroslav sagte in [OFFEN]* [Blockly] EXEC CP klappt nicht:
aber ist ja auch egal.
Nee, egal ist das nicht. Denn davon hängt ab wie man da am besten vorgeht.
Ich bin da aber raus, von PV Anlagen und deren Steuerung hab ich keine Ahnung. Gibt aber wohl ein paar native Adapter für iobroker die sowas auch machen. -
@gyroslav Den Fehler erzeugst du doch selber mit console.error(). Wenn du innerhalb der Exec einen Fehler abfragen willst musst du auch innerhalb der Exec-Function den Fehler abfangen. Hast du mal nach geschaut, ob die Datei angekommen ist?
Musst du mal probieren.
exec(cmd, (error, stdout, stderr) => { if (error) { console.warn(error); } }); exec('sudo ......', async function (error, result, stderr) { console.log(result); });
-
@gyroslav
Für sudo ist normalerweise das Passwort notwendig.
Es gibt einige Befehle die iobroker ohne Passwort ausführen kann/darf.Zu finden sind die in der Datei iobroker unter /etc/sudoers.d/
Wenn du cp ohne Passwort nutzen willst:iobroker ALL=(ALL) NOPASSWD: /bin/cp
zu der o.g. Datei hinzufügen
Danach darf iobroker "sudo cp ..." ohne Passwort ausführen.Und was den Fehler angeht sehe ich das wie @MCU