NEWS
Script wird nicht ausgeführt
-
Hallo zusammen,
über Blockly mit dem Exec Baustein, möchte ich das Skript "Markise.sh" ausführen lassen.
Inhalt der Markise.sh Datei ist folgender:case $1 in rein)aircontrol -r reinneu.asd;; raus)aircontrol -r rausneu.asd;; stop)aircontrol -r stopneu.asd;; esac
Aufgerufen wird das Script in Blockly mit "bash /home/pi/smarthome/markise.sh raus"
Händisch klappt dies auch, nur nicht über Blockly.
Der IoBroker User hat Zugriff auf das Verzeichnis und mittels "chmod 777", sowie "chmod a+x" habe ich den Dateien entsprechende Rechte gegeben - ohne Erfolg.Ich erhalte auch keine Fehlermeldung oder ähnliches.
Hat jemand eine Idee, was ich falsch mache?
Versionen:
RaspberryPi4
js-controller: 3.3
node.js: 12.22.1
NPM: 6.14.12
JavaScript Adapter: 5.2.8 -
Mahlzeit!
Wie sieht denn das ganze Blockly aus? -
@haselchen
Anbei ein Screenshot vom Script. -
Der user 'iobroker' dürfte das skript an der Stelle vermutlich nicht ausführen, da fehlem ihm die Rechte.
Die sind in den sudoers noch eingeschränkt. Leg das skript in /home/iobroker ab. -
-
@thomas-braun der iobroker User hat %iobroker ALL=(ALL:ALL) ALL in der sudoers Datei..
@haselchen Ja, andere Scripte klappen auch, wie bspw. das Steuern meines AV-Receivers über Blokly und die Shell. Die Datei dazu liegt im selben Verzeichnis.
-
Muss/Darf das raus hinter .sh stehen?
-
@haselchen Ja und Ja, das Raus ist in dem Fall für die Case abfrage. Das funktioniert bei meinem vorherigen Beispiel des AV-Receivers ebenfalls ohne Probleme.
@thomas-braun Das habe ich auch schon ausprobiert in dem Verzeichnis - gleiches Fehlerbild.
-
-
@haselchen Leider auch schon ohne Erfolg ausprobiert
-
Ist von 2019, aber das Einzige, was ich dazu gefunden habe
-
@haselchen Leider ist da auch nichts weiteres drin. Ich habe das Gefühl, dass dies an dem Programm liegt.
-
@holle91 sagte in Script wird nicht ausgeführt:
@haselchen Leider ist da auch nichts weiteres drin. Ich habe das Gefühl, dass dies an dem Programm liegt.
lass mal das bash vorne weg
-
-
@haselchen sagte in Script wird nicht ausgeführt:
dann müsste er aber nen Punkt vorm Schrägstrich machen oder nicht?
./ ?
nein, die Angabe von /home/......... ist ja ok.
ich habe gerade festgestellt dass man bash so kein Kommando (mehr???) übergeben kann. ohne die Angabe von bash wird aber der Standard-Kommandointerpreter für die xxx.sh genommen, oder die welche im Skript steht (#!/bin/bash)
mit
/bin/bash -c 'befehl'
sollte es aber auch funktionieren -
Naja, eine #shebang sollte man halt in seinen Skripten schon drin haben. Hatte gedacht das da oben sollte ein Auszug des skripts sein...
-
@thomas-braun sagte in Script wird nicht ausgeführt:
Naja, eine #shebang sollte man halt in seinen Skripten schon drin haben. Hatte gedacht das da oben sollte ein Auszug des skripts sein...
na ja, nur wenn man eine bestimmte Shell bevorzugen will. Ansonsten wird halt die Standardshell genommen. und mit bash -c wird sie auch überlesen, denke ich
-
@thomas-braun auch mit "#!/bin/bash" im Skript, funktioniert es nicht. Andere Skripte funktionieren auf gleiche Weise allerdings.
Auch das "bash" wegzulassen, hat nichts gebracht - in anderen Befehlen klappt es jedoch mit dem bash weiterhin.Das Tool aircontrol greift auf einen Sender, welcher an nem GPIO angeschlossen ist, zu. Kann es hier noch permission Probleme geben?
Auch ein "mkdir" wird nicht ausgeführt, trotz dessen, dass das Skript in "home/iobroker" liegt..Ich kann nicht nachvollziehen, wieso es nicht klappt. Über die Shell direkt funktioniert es ja auch..