NEWS
Script per exec ausführen / sudo Rechteproblem?
-
Hallo zusammen!
Ich bin leider noch Neuling in der ganzen Sache und stehe vor einem Problem.
Ich habe auf meinem RaspberryPi ein Skript zusammenkopiert welches meine SD-Karte während des laufenden Betriebs klont, shrinkt, gzipt und anschließend auf meinen NAS verschiebt.
per Shell-Konsole funktioniert das einwandfrei!Jetzt würde ich das Script gerne über blockly ausführen, was mir aber nicht bzw. nur teilweise gelingt!
Wenn Blockly das Script mit sudo starten will passiert rein garnix.
Startet Blockly das Skript ohne sudo werden lediglich States gesetzt die ich in das Script geschrieben habe, aber zumindest wird es grundsetzlich schonmal ausgeführt.Besteht hier ein Rechte-Problem mit den Befehlen innerhalb des Scripts?
Habe versucht iobroker diverse Rechte zu geben per /sudoers usw. aber alles nur was ich mir "ergooglen" konnte.
Gibt es eine Lösung ohne iobroker volle Rechte zu geben?Meine Möglichkeiten sind jetzt ausgeschöpft und ich stehe voll auf dem Schlauch
Könnte mir da bitte jemand weiterhelfen?
Danke schonmal im Voraus!! -
@Bert Hast du in den Instanzeinstellungen des Javascript Adapters die exec funktion aktiviert?
-
@CrunkFX said in Script per exec ausführen / sudo Rechteproblem?:
@Bert Hast du in den Instanzeinstellungen des Javascript Adapters die exec funktion aktiviert?
Ja ist aktiviert. Ohne sudo im exec-Block wird das Script ausgeführt, aber nur die Befehle "state set" welche einen Wert eines Objekts in ioBroker setzen.
bei allen anderen Befehlen scheinen die Rechte zu fehlen -
@Bert IOBroker Alle Rechte zu geben ist afaik nicht der richtige Weg. Vielleicht könntest du ja Mal dein Script hier reinstellen (in Codetags bitte) und dann kann evtl jemand der sich mit Linux auskennt das Mal anschauen. Vielleicht @Thomas-Braun
-
Hier ist das Skript:
mountpoint='/media/pi/770E-65D0' STORAGEPATH="/media/pi/770E-65D0" IMAGENAME="rpi" LOGFILE="/var/log/"$HOSTNAME_${IMAGENAME}_"backup-image.log" sudo mount -a iobroker state set 0_userdata.0.Status_des_SD-Karten_Backups_des_ioBrokers "1" echo $(date +%Y-%m-%d_%H-%M-%S) " - Started to clone image" >> ${LOGFILE} sudo dd if=/dev/mmcblk0 of=${STORAGEPATH}/${IMAGENAME}_$(date +%Y-%m-%d).img bs=1MB echo $(date +%Y-%m-%d_%H-%M-%S) " - Finished to clone image" >> ${LOGFILE} iobroker state set 0_userdata.0.Status_des_SD-Karten_Backups_des_ioBrokers "2" echo $(date +%Y-%m-%d_%H-%M-%S) " - Started to resize image" >> ${LOGFILE} sudo /bin/bash /usr/local/bin/pishrink.sh -d ${STORAGEPATH}/${IMAGENAME}_$(date +%Y-%m-%d).img ${STORAGEPATH}/${IMAGENAME}_$(date +%Y-%m-%d)-small.img echo $(date +%Y-%m-%d_%H-%M-%S) " - Finished to resize big image" >> ${LOGFILE} echo $(date +%Y-%m-%d_%H-%M-%S) " - Started to delete big image" >> ${LOGFILE} sudo rm ${STORAGEPATH}/${IMAGENAME}_$(date +%Y-%m-%d).img echo $(date +%Y-%m-%d_%H-%M-%S) " - Finished to delete big image" >> ${LOGFILE} iobroker state set 0_userdata.0.Status_des_SD-Karten_Backups_des_ioBrokers "3" echo $(date +%Y-%m-%d_%H-%M-%S) " - Started to compress small image" >> ${LOGFILE} gzip -q ${STORAGEPATH}/${IMAGENAME}_$(date +%Y-%m-%d)-small.img echo $(date +%Y-%m-%d_%H-%M-%S) " - Finished to compress small image" >> ${LOGFILE} iobroker state set 0_userdata.0.Status_des_SD-Karten_Backups_des_ioBrokers "4" mv ${STORAGEPATH}/${IMAGENAME}_$(date +%Y-%m-%d)-small.img.gz /media/pi/bserver iobroker state set 0_userdata.0.Status_des_SD-Karten_Backups_des_ioBrokers "5" echo $(date +%Y-%m-%d_%H-%M-%S) " - Mission Accomplished!!!" >> ${LOGFILE}
-
Als Ergänzung:
Grundsätzlich ist mir der Weg zum Ziel vollkommen egal!
Also wenn es einen Umweg gibt um das Script auszuführen, dann nehme ich den selbstverständlich auch in kauf!
Mir stellt sich gerade die Frage ob man das Script wohlmöglich per URL bzw. http Befehl ausführen lassen kann ?! -
-
@Meister-Mopper
Vielen Dank für deinen Tipp!
Habe die Schritte aus deinem Beitrag mal durchgeführt, aber das hat leider auch nicht funktioniert.
Habe bestimmt schon vorher irgendwas irreparabel gemacht durch das ganz Rechte-hin-und-her vergeben
Ich denke ich werde besser erstmal das Backup-Image aufspielen und nochmal recherchieren.
Vielleicht hat ja noch jemand einen Tipp -
@Bert Installiere dir den Terminaladapter und führe das Skript von dort aus. Das wird zwar auch nicht funktionieren aber du siehst womöglich sehr viel besser wo es hakt. Dort ist der user nämlich auch der iobroker
-
@CrunkFX sagte in Script per exec ausführen / sudo Rechteproblem?:
und dann kann evtl jemand der sich mit Linux auskennt das Mal anschauen. Vielleicht @Thomas-Braun
Von skripten und insbesondere JavaSkript hab ich keine Ahnung.
Soll das oben ein shell-skript sein? Dann fehlt da mindestens mal die shebang. -
@Thomas-Braun Ich hatte in Erinnerung, dass du ein verfechter von sudo bist, daher dachte ich du könntest evtl. bei dem Rechteproblem helfen
-
@CrunkFX @Bert
Ich verstehe den Ansatz schon nicht:ein Skript zusammenkopiert welches meine SD-Karte während des laufenden Betriebs klont, shrinkt, gzipt und anschließend auf meinen NAS verschiebt.
Ich sicher lediglich per backitup den ioBroker relevanten Kram weg, das System selber ist mir doch wumpe. Das zimmer ich ohnehin schnell fix auf eine neue SD-Karte, im Falle eines Falles. Da mach ich gar keine Klimmzüge für.
-
Hallo zusammen,
sorry für die späte Antwort, haben spontan ein paar Tage Urlaub gemacht...@Thomas-Braun said in Script per exec ausführen / sudo Rechteproblem?:
@CrunkFX sagte in Script per exec ausführen / sudo Rechteproblem?:
und dann kann evtl jemand der sich mit Linux auskennt das Mal anschauen. Vielleicht @Thomas-Braun
Von skripten und insbesondere JavaSkript hab ich keine Ahnung.
Soll das oben ein shell-skript sein? Dann fehlt da mindestens mal die shebang.sorry, die Shebang ist vorhanden, hab ich nur nicht mitkopiert
@Thomas-Braun said in Script per exec ausführen / sudo Rechteproblem?:
@CrunkFX @Bert
Ich verstehe den Ansatz schon nicht:ein Skript zusammenkopiert welches meine SD-Karte während des laufenden Betriebs klont, shrinkt, gzipt und anschließend auf meinen NAS verschiebt.
Ich sicher lediglich per backitup den ioBroker relevanten Kram weg, das System selber ist mir doch wumpe. Das zimmer ich ohnehin schnell fix auf eine neue SD-Karte, im Falle eines Falles. Da mach ich gar keine Klimmzüge für.
Naja, der eine so, der andere so. Für mich wäre es schon von Vorteil eine "Plug&Play-Sicherung" zu haben die ich zuvor komfortabel aus dem ioBroker gestartet habe. In der VIS soll eine schöne View mit diversen Systembefehlen laufen wo sich auch ein Backup-Button gut macht.
Backitup ist natürlich auch im Einsatz und sichert regelmäßig auf dem NAS. Wenn ich am System rumfummel starte ich das Backup-Script vorher von Hand. Alles kein Thema.
Trotzdem ist Neugier und der Wunsch nach etwas Komfort vorhanden, aber da das jetzt doch viel zu viel Zeit frisst muss eine von-Hand-Sicherung und Backitup reichen.@fastfoot said in Script per exec ausführen / sudo Rechteproblem?:
@Bert Installiere dir den Terminaladapter und führe das Skript von dort aus. Das wird zwar auch nicht funktionieren aber du siehst womöglich sehr viel besser wo es hakt. Dort ist der user nämlich auch der iobroker
Terminaladapter habe ich probiert, aber wie du schon sagtest bringt mich das auch nicht weiter
Aber auch für den Tipp danke! -
@Bert Naja, nur weil ein "sudo" davor steht, heißt das noch lange nicht, dass der Befehl auch ausgeführt wird.
#6 dürfte schon scheitern, da normalerweise nur "root" mounten darf. Das klappt zwar dann mittels "sudo", nur muss man dann das root-Passwort eingeben (was in einem automatischem Skript eher schlecht geht)...
Versuche als Test einfach mal einsudo -u iobroker sudo mount -a
Damit wird dein Befehl als User iobroker ausgeführt.