Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Script per exec ausführen / sudo Rechteproblem?

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Script per exec ausführen / sudo Rechteproblem?

    This topic has been deleted. Only users with topic management privileges can see it.
    • B
      Bert last edited by

      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!!

      CrunkFX 1 Reply Last reply Reply Quote 0
      • CrunkFX
        CrunkFX Forum Testing @Bert last edited by

        @Bert Hast du in den Instanzeinstellungen des Javascript Adapters die exec funktion aktiviert?

        B 1 Reply Last reply Reply Quote 0
        • B
          Bert @CrunkFX last edited by

          @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 🙄

          CrunkFX 1 Reply Last reply Reply Quote 0
          • CrunkFX
            CrunkFX Forum Testing @Bert last edited by

            @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

            B Thomas Braun 2 Replies Last reply Reply Quote 0
            • B
              Bert @CrunkFX last edited by

              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}
               
              
              B 1 Reply Last reply Reply Quote 0
              • B
                Bert @Bert last edited by

                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 1 Reply Last reply Reply Quote 0
                • Meister Mopper
                  Meister Mopper @Bert last edited by Meister Mopper

                  @Bert Soviel wie ich verstehe, muss Dein ioBroker-user auch Schreibrechte auf dem Zielsystem haben. Vielleicht hilft ja dieser thread weiter.

                  B 1 Reply Last reply Reply Quote 0
                  • B
                    Bert @Meister Mopper last edited by

                    @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

                    F 1 Reply Last reply Reply Quote 0
                    • F
                      fastfoot @Bert last edited by

                      @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

                      1 Reply Last reply Reply Quote 0
                      • Thomas Braun
                        Thomas Braun Most Active @CrunkFX last edited by Thomas Braun

                        @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.

                        CrunkFX B 2 Replies Last reply Reply Quote 0
                        • CrunkFX
                          CrunkFX Forum Testing @Thomas Braun last edited by

                          @Thomas-Braun Ich hatte in Erinnerung, dass du ein verfechter von sudo bist, daher dachte ich du könntest evtl. bei dem Rechteproblem helfen

                          Thomas Braun 1 Reply Last reply Reply Quote 0
                          • Thomas Braun
                            Thomas Braun Most Active @CrunkFX last edited by

                            @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.

                            1 Reply Last reply Reply Quote 1
                            • B
                              Bert @Thomas Braun last edited by

                              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!

                              SBorg 1 Reply Last reply Reply Quote 0
                              • SBorg
                                SBorg Forum Testing Most Active @Bert last edited by

                                @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 ein

                                sudo -u iobroker sudo mount -a
                                

                                Damit wird dein Befehl als User iobroker ausgeführt.

                                1 Reply Last reply Reply Quote 1
                                • First post
                                  Last post

                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                869
                                Online

                                32.0k
                                Users

                                80.5k
                                Topics

                                1.3m
                                Posts

                                6
                                14
                                1905
                                Loading More Posts
                                • Oldest to Newest
                                • Newest to Oldest
                                • Most Votes
                                Reply
                                • Reply as topic
                                Log in to reply
                                Community
                                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                The ioBroker Community 2014-2023
                                logo