Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. exec mit sudo

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.5k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    828

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

exec mit sudo

Scheduled Pinned Locked Moved Skripten / Logik
securityjavascript
6 Posts 3 Posters 841 Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    Mephist0
    wrote on last edited by
    #1

    Ich möchte ein bash script via exec ausführen. Einer der Befehle in dem Script braucht sudo Rechte.
    Wie bekomme ich exec "überredet" ein Script als root auszuführen? Ich bekomme im Log die Fehlermeldung

    stdout: Error: Command failed: echo -e "MyPassword " | sudo -S MyBashScript We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. [sudo] password for iobroker: Sorry, try again. [sudo] password for iobroker: Sorry, try again. [sudo] password for iobroker: sudo: no password was provided sudo: 2 incorrect password attempts
    

    Das Passwort ist korrekt. Mein JavaScript command lautet:

    exec('echo -e "MyPassword\n" | sudo -S MyBashScript', function (error, stdout, stderr) {
                console.log('stdout: ' + stdout);
                console.log('stdout: ' + error);
     });
    

    Ich habe es schon mit und ohne '\n' probiert. Mein root user auf dem Raspberry heißt pi. Daher habe ich auch

    exec('echo -e "MyPassword\n" | sudo -S -u pi MyBashScript', function (error, stdout, stderr) {
    

    versucht. Leider auch vergeblich. Die Fehlermeldung bleibt dieselbe
    Habe leider in der Suche nichts gefunden. Hat jemand einen Tipp?

    PS: Bitte keine Diskussion darüber ob sudo hier Sinn macht oder ob man das tun sollte.

    T OliverIOO M 3 Replies Last reply
    0
    • M Mephist0

      Ich möchte ein bash script via exec ausführen. Einer der Befehle in dem Script braucht sudo Rechte.
      Wie bekomme ich exec "überredet" ein Script als root auszuführen? Ich bekomme im Log die Fehlermeldung

      stdout: Error: Command failed: echo -e "MyPassword " | sudo -S MyBashScript We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. [sudo] password for iobroker: Sorry, try again. [sudo] password for iobroker: Sorry, try again. [sudo] password for iobroker: sudo: no password was provided sudo: 2 incorrect password attempts
      

      Das Passwort ist korrekt. Mein JavaScript command lautet:

      exec('echo -e "MyPassword\n" | sudo -S MyBashScript', function (error, stdout, stderr) {
                  console.log('stdout: ' + stdout);
                  console.log('stdout: ' + error);
       });
      

      Ich habe es schon mit und ohne '\n' probiert. Mein root user auf dem Raspberry heißt pi. Daher habe ich auch

      exec('echo -e "MyPassword\n" | sudo -S -u pi MyBashScript', function (error, stdout, stderr) {
      

      versucht. Leider auch vergeblich. Die Fehlermeldung bleibt dieselbe
      Habe leider in der Suche nichts gefunden. Hat jemand einen Tipp?

      PS: Bitte keine Diskussion darüber ob sudo hier Sinn macht oder ob man das tun sollte.

      T Do not disturb
      T Do not disturb
      ticaki
      wrote on last edited by ticaki
      #2

      @mephist0

      Nach diesem Befehl

      sudo cat /etc/sudoers.d/iobroker
      

      versteht man diese Zeile besser

      iobroker ALL=(ALL) NOPASSWD: /path/to/script
      

      Ist aber möglich, das der fixer oder ein Update das rauswirft also besser in eine andere Datei.

      Noch eine kleine Anmerkung:
      Du solltest das Skript so mit Rechten versehen das User iobroker es nur ausführen kann, niemals schreiben und am besten auch nicht lesen. Beim Verzeichnis muss schreiben auch verboten sein, weiß abe rnicht mehr was öffnen und lesen genau macht.

      Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

      Spenden

      1 Reply Last reply
      1
      • M Mephist0

        Ich möchte ein bash script via exec ausführen. Einer der Befehle in dem Script braucht sudo Rechte.
        Wie bekomme ich exec "überredet" ein Script als root auszuführen? Ich bekomme im Log die Fehlermeldung

        stdout: Error: Command failed: echo -e "MyPassword " | sudo -S MyBashScript We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. [sudo] password for iobroker: Sorry, try again. [sudo] password for iobroker: Sorry, try again. [sudo] password for iobroker: sudo: no password was provided sudo: 2 incorrect password attempts
        

        Das Passwort ist korrekt. Mein JavaScript command lautet:

        exec('echo -e "MyPassword\n" | sudo -S MyBashScript', function (error, stdout, stderr) {
                    console.log('stdout: ' + stdout);
                    console.log('stdout: ' + error);
         });
        

        Ich habe es schon mit und ohne '\n' probiert. Mein root user auf dem Raspberry heißt pi. Daher habe ich auch

        exec('echo -e "MyPassword\n" | sudo -S -u pi MyBashScript', function (error, stdout, stderr) {
        

        versucht. Leider auch vergeblich. Die Fehlermeldung bleibt dieselbe
        Habe leider in der Suche nichts gefunden. Hat jemand einen Tipp?

        PS: Bitte keine Diskussion darüber ob sudo hier Sinn macht oder ob man das tun sollte.

        OliverIOO Offline
        OliverIOO Offline
        OliverIO
        wrote on last edited by
        #3

        @mephist0

        Bitte diesen Artikel sorgfältig lesen.
        Die erwähnten Dateien nur mit vissudo bearbeoten
        Am besten aber eine neue erzeugen die werden dann zusammengefasst.
        Wennannan dieser Stelle ohne vissudo bearbeitet kann man das komplette system sperren.
        Vissudo prüft das.

        Meine Adapter und Widgets
        TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
        Links im Profil

        T 1 Reply Last reply
        2
        • OliverIOO OliverIO

          @mephist0

          Bitte diesen Artikel sorgfältig lesen.
          Die erwähnten Dateien nur mit vissudo bearbeoten
          Am besten aber eine neue erzeugen die werden dann zusammengefasst.
          Wennannan dieser Stelle ohne vissudo bearbeitet kann man das komplette system sperren.
          Vissudo prüft das.

          T Do not disturb
          T Do not disturb
          ticaki
          wrote on last edited by
          #4

          @oliverio

          Ein link damit es auch nen beleg hat.

          https://unix.stackexchange.com/questions/27594/why-do-we-need-to-use-visudo-instead-of-directly-modifying-the-sudoers-file

          Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

          Spenden

          OliverIOO 1 Reply Last reply
          1
          • T ticaki

            @oliverio

            Ein link damit es auch nen beleg hat.

            https://unix.stackexchange.com/questions/27594/why-do-we-need-to-use-visudo-instead-of-directly-modifying-the-sudoers-file

            OliverIOO Offline
            OliverIOO Offline
            OliverIO
            wrote on last edited by
            #5

            @ticaki
            stimmt,
            den hatte ich schon kopiert, aber vergessen einzufügen
            https://wiki.ubuntuusers.de/sudo/Konfiguration/

            Meine Adapter und Widgets
            TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
            Links im Profil

            1 Reply Last reply
            0
            • M Mephist0

              Ich möchte ein bash script via exec ausführen. Einer der Befehle in dem Script braucht sudo Rechte.
              Wie bekomme ich exec "überredet" ein Script als root auszuführen? Ich bekomme im Log die Fehlermeldung

              stdout: Error: Command failed: echo -e "MyPassword " | sudo -S MyBashScript We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. [sudo] password for iobroker: Sorry, try again. [sudo] password for iobroker: Sorry, try again. [sudo] password for iobroker: sudo: no password was provided sudo: 2 incorrect password attempts
              

              Das Passwort ist korrekt. Mein JavaScript command lautet:

              exec('echo -e "MyPassword\n" | sudo -S MyBashScript', function (error, stdout, stderr) {
                          console.log('stdout: ' + stdout);
                          console.log('stdout: ' + error);
               });
              

              Ich habe es schon mit und ohne '\n' probiert. Mein root user auf dem Raspberry heißt pi. Daher habe ich auch

              exec('echo -e "MyPassword\n" | sudo -S -u pi MyBashScript', function (error, stdout, stderr) {
              

              versucht. Leider auch vergeblich. Die Fehlermeldung bleibt dieselbe
              Habe leider in der Suche nichts gefunden. Hat jemand einen Tipp?

              PS: Bitte keine Diskussion darüber ob sudo hier Sinn macht oder ob man das tun sollte.

              M Offline
              M Offline
              Mephist0
              wrote on last edited by
              #6

              Today I learned a thing - or 2. Danke schonmal für eure Antworten.

              Dokumentation / Minimum Working Example für die Nachwelt:

              Ich habe ein test script "reboot" gebaut, das einfach nur einen Reboot durchführen soll.

              #!/bin/bash
              echo "sudo shutdown -r now"
              sudo shutdown -r now
              

              Das Script liegt in /opt/iobroker/. Mein JavaScript lautet:

               exec('sudo /opt/iobroker/reboot', function (error, stdout, stderr) {
                          console.log('stdout: ' + stdout);
                          console.log('stdout: ' + error);
               });
              

              Über das Kommando

              sudo visudo -f /etc/sudoers.d/iobroker
              

              habe ich in /etc/sudoers.d/iobroker folgende neue Zeile ergänzt

              iobroker ALL=(ALL) NOPASSWD: /opt/iobroker/reboot
              

              Auf Basis von @ticaki Hinweis, habe ich dem Script noch die Lese-Rechte entfernt (schreiben konnte es schon vorher nicht) mit dem command sudo chmod 751 reboot

              pi@iobroker-pi: $ ls -l /opt/iobroker
              -rwxr-xr-x+   1 pi       pi          388 Jul 30 10:36 reboot
              pi@iobroker-pi: $ sudo chmod 751 /opt/iobroker/reboot
              pi@iobroker-pi: $ ls -l /opt/iobroker
              -rwxr-x--x+   1 pi       pi          388 Jul 30 10:36 reboot
              

              Ich habe sicherheitshalber iobroker neu gestartet, damit die neuen Einträge auch wirklich neu eingelesen werden.
              Nun wird das Skript ausgeführt.

              Danke euch!

              1 Reply Last reply
              0
              Reply
              • Reply as topic
              Log in to reply
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes


              Support us

              ioBroker
              Community Adapters
              Donate

              671

              Online

              32.6k

              Users

              82.1k

              Topics

              1.3m

              Posts
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2025
              logo
              • Login

              • Don't have an account? Register

              • Login or register to search.
              • First post
                Last post
              0
              • Home
              • Recent
              • Tags
              • Unread 0
              • Categories
              • Unreplied
              • Popular
              • GitHub
              • Docu
              • Hilfe