Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Exec unter JavaScript führt Shell Script nicht aus

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.1k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.1k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.4k

Exec unter JavaScript führt Shell Script nicht aus

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascriptblockly
15 Beiträge 5 Kommentatoren 3.6k Aufrufe 4 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • W Offline
    W Offline
    WurstDLX
    schrieb am zuletzt editiert von WurstDLX
    #1

    Re: Exec führt .sh nicht aus

    Hallo, ich würde das Thema erneut aufgreifen wollen. Und zwar versuche ich verzweifelt ein einfaches Skript

    #!bin/bash
    mkdir testordner
    

    mittels exec auszuführen:

    function execScript(){
        exec('sudo /home/iobroker/test.sh', function (error, stdout, stderr) {
        console.log('stdout: ' + stdout);
        console.log('stdout: ' + error);
        });
    }
    

    Als Antwort kommt immer "stdout: Error: Command failed: sudo /home/iobroker/test.sh Wir gehen davon aus, dass der lokale Systemadministrator Ihnen die Regeln erklärt hat. Normalerweise..."

    Das Skript liegt im Ordner /home/iobroker und ist mittels chown auf den user iobroker gesetzt. chmod+x wurde auch getan. Das Skript läuft über Shell mit Putty anstandslos.

    Die Varianten mit ./ und sudo und bash habe ich probiert, erfolglos. Die Installation von iobroker ist ca. 4 Monate alt.

    Danke euch!

    arteckA AlCalzoneA 2 Antworten Letzte Antwort
    0
    • W WurstDLX

      Re: Exec führt .sh nicht aus

      Hallo, ich würde das Thema erneut aufgreifen wollen. Und zwar versuche ich verzweifelt ein einfaches Skript

      #!bin/bash
      mkdir testordner
      

      mittels exec auszuführen:

      function execScript(){
          exec('sudo /home/iobroker/test.sh', function (error, stdout, stderr) {
          console.log('stdout: ' + stdout);
          console.log('stdout: ' + error);
          });
      }
      

      Als Antwort kommt immer "stdout: Error: Command failed: sudo /home/iobroker/test.sh Wir gehen davon aus, dass der lokale Systemadministrator Ihnen die Regeln erklärt hat. Normalerweise..."

      Das Skript liegt im Ordner /home/iobroker und ist mittels chown auf den user iobroker gesetzt. chmod+x wurde auch getan. Das Skript läuft über Shell mit Putty anstandslos.

      Die Varianten mit ./ und sudo und bash habe ich probiert, erfolglos. Die Installation von iobroker ist ca. 4 Monate alt.

      Danke euch!

      arteckA Offline
      arteckA Offline
      arteck
      Developer Most Active
      schrieb am zuletzt editiert von arteck
      #2

      @WurstDLX sagte in Exec unter JavaScript führt Shell Script nicht aus:

      Die Installation von iobroker ist ca.4 Monate alt.

      das ist mal ne geile Beschreibung.. da wissen wir direkt welche Version installiert ist :-=)

      ok spass beiseite
      hast du auch
      18eeb390-726e-4651-bad1-6608355f88e6-grafik.png

      ausserdem das sudo muss weg

      zigbee hab ich, zwave auch, nuc's genauso und HA auch

      1 Antwort Letzte Antwort
      0
      • W Offline
        W Offline
        WurstDLX
        schrieb am zuletzt editiert von WurstDLX
        #3

        Habe iobroker 4.0.9 und JS 4.5.1 installiert.
        Das Skript

        function execScript(){
            exec('/home/iobroker/test.sh', function (error, stdout, stderr) {
            console.log('stdout: ' + stdout);
            console.log('stdout: ' + error);
            });
        }
        

        hatte ich natürlich bevor ich mit der Fehlersuche anfing. Das sudo und Varianten habe ich dann im Laufe erfolglos getestet. Ja der Exec Command ist erlaubt. Reboot und ls etc läuft ohne Probleme.

        AlCalzoneA 1 Antwort Letzte Antwort
        0
        • W WurstDLX

          Habe iobroker 4.0.9 und JS 4.5.1 installiert.
          Das Skript

          function execScript(){
              exec('/home/iobroker/test.sh', function (error, stdout, stderr) {
              console.log('stdout: ' + stdout);
              console.log('stdout: ' + error);
              });
          }
          

          hatte ich natürlich bevor ich mit der Fehlersuche anfing. Das sudo und Varianten habe ich dann im Laufe erfolglos getestet. Ja der Exec Command ist erlaubt. Reboot und ls etc läuft ohne Probleme.

          AlCalzoneA Offline
          AlCalzoneA Offline
          AlCalzone
          Developer
          schrieb am zuletzt editiert von AlCalzone
          #4

          @WurstDLX Der Skript-Adapter läuft als User iobroker. iobroker darf nur bestimmte Kommandos als sudo ausführen. /home/iobroker/test.sh gehört nicht dazu. Du kannst es aber manuell erlauben, indem du die /etc/sudoers.d/iobroker bearbeitest oder (bessere) im selben Verzeichnis eine eigene Datei pflegst. Wie das geht wurde schon zuhauf hier im Forum beschrieben.

          Allerdings bezweifle ich, dass root-Rechte nötig sind (und vermutlich ist es sogar schädlich), um im Home-Verzeichnis von iobroker als dieser User einen Ordner anzulegen.
          Kommt denn bei der Variante ohne sudo ein Fehler? stderr hast du ja nicht ausgegeben.

          Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

          harrymH W 2 Antworten Letzte Antwort
          0
          • AlCalzoneA AlCalzone

            @WurstDLX Der Skript-Adapter läuft als User iobroker. iobroker darf nur bestimmte Kommandos als sudo ausführen. /home/iobroker/test.sh gehört nicht dazu. Du kannst es aber manuell erlauben, indem du die /etc/sudoers.d/iobroker bearbeitest oder (bessere) im selben Verzeichnis eine eigene Datei pflegst. Wie das geht wurde schon zuhauf hier im Forum beschrieben.

            Allerdings bezweifle ich, dass root-Rechte nötig sind (und vermutlich ist es sogar schädlich), um im Home-Verzeichnis von iobroker als dieser User einen Ordner anzulegen.
            Kommt denn bei der Variante ohne sudo ein Fehler? stderr hast du ja nicht ausgegeben.

            harrymH Offline
            harrymH Offline
            harrym
            schrieb am zuletzt editiert von
            #5

            @AlCalzone sagte in Exec unter JavaScript führt Shell Script nicht aus:

            /etc/sudoers.d/iobroker bearbeitest oder (bessere) im selben Verzeichnis eine eigene Datei pflegst.

            ? der fixer legt doch den user iobroker in sudoers an, falls nicht vorhanden ? und im seinem HOME ... hat der "user" iobroker doch normal alle rechte ... AUSSER das test.sh wurde
            durch nen anderen user erstellt ;)

            ASRock FM2A88X-ITX+ mit 32GB RAM, 128GB SSD mit Proxmox, 3x1 TB SSD als RAID mit CT und VMs.

            1 Antwort Letzte Antwort
            0
            • WalW Online
              WalW Online
              Wal
              Developer
              schrieb am zuletzt editiert von
              #6
              function execScript(){
                 exec("echo 'passwort'|sudo -S dmesg", function (error, stdout, stderr) {
                  console.log('stdout: ' + stdout);
                  console.log('stdout: ' + error);
                  });
              }
              

              Mit sudo geht's auch.

              Gruß
              Walter

              DoorIO-Adapter
              wioBrowser-Adapter und wioBrowser

              harrymH 1 Antwort Letzte Antwort
              0
              • WalW Wal
                function execScript(){
                   exec("echo 'passwort'|sudo -S dmesg", function (error, stdout, stderr) {
                    console.log('stdout: ' + stdout);
                    console.log('stdout: ' + error);
                    });
                }
                

                Mit sudo geht's auch.

                harrymH Offline
                harrymH Offline
                harrym
                schrieb am zuletzt editiert von
                #7

                @Wal klar ... da brauchste es sudo , dass der "user" iobroker ja hat .... biste ausserhalb vom iobroker home .... mit dmesg

                ASRock FM2A88X-ITX+ mit 32GB RAM, 128GB SSD mit Proxmox, 3x1 TB SSD als RAID mit CT und VMs.

                1 Antwort Letzte Antwort
                0
                • WalW Online
                  WalW Online
                  Wal
                  Developer
                  schrieb am zuletzt editiert von
                  #8

                  Mach ein

                  chmod +x test.sh
                  

                  dann geht es

                  Gruß
                  Walter

                  DoorIO-Adapter
                  wioBrowser-Adapter und wioBrowser

                  harrymH 1 Antwort Letzte Antwort
                  0
                  • WalW Wal

                    Mach ein

                    chmod +x test.sh
                    

                    dann geht es

                    harrymH Offline
                    harrymH Offline
                    harrym
                    schrieb am zuletzt editiert von
                    #9

                    @Wal .... thx! an das hab ich nicht gedacht .... dass es script ned ausgeführt werden darf g

                    ASRock FM2A88X-ITX+ mit 32GB RAM, 128GB SSD mit Proxmox, 3x1 TB SSD als RAID mit CT und VMs.

                    1 Antwort Letzte Antwort
                    0
                    • AlCalzoneA AlCalzone

                      @WurstDLX Der Skript-Adapter läuft als User iobroker. iobroker darf nur bestimmte Kommandos als sudo ausführen. /home/iobroker/test.sh gehört nicht dazu. Du kannst es aber manuell erlauben, indem du die /etc/sudoers.d/iobroker bearbeitest oder (bessere) im selben Verzeichnis eine eigene Datei pflegst. Wie das geht wurde schon zuhauf hier im Forum beschrieben.

                      Allerdings bezweifle ich, dass root-Rechte nötig sind (und vermutlich ist es sogar schädlich), um im Home-Verzeichnis von iobroker als dieser User einen Ordner anzulegen.
                      Kommt denn bei der Variante ohne sudo ein Fehler? stderr hast du ja nicht ausgegeben.

                      W Offline
                      W Offline
                      WurstDLX
                      schrieb am zuletzt editiert von WurstDLX
                      #10

                      @AlCalzone
                      Also von vorne: Ich habe natürlich ohne sudo das aufgerufen und dann kommt das was ich bereits im ersten Post geschrieben hatte:
                      stderr:"Wir gehen davon aus, dass der lokale Systemadministrator Ihnen die Regeln erklärt hat. Normalerweise läuft es auf drei ..."
                      stdout:
                      error: "Error: Command failed: /home/iobroker/test.sh Wir gehen davon aus, dass der lokale Systemadministrator Ihnen..."

                      Das Skript wurde natürlich als user pi angelegt und per

                      chown -R iobroker:iobroker test.sh
                      

                      geändert.

                      chmod +x test.sh
                      

                      habe ich bereits getan gehabt. Wie gesagt, in der Shell läuft das Skript normal wie erwartet. Es wurde ins Verzeichnis /home/iobroker getan und wird dennoch nicht von js ausgeführt, bzw mit der oben genannten Fehlermeldung.
                      Der Aufruf mit sudo war einer von vielen Tests die ich im Anschluss getan hatte :(

                      AlCalzoneA 1 Antwort Letzte Antwort
                      0
                      • W WurstDLX

                        @AlCalzone
                        Also von vorne: Ich habe natürlich ohne sudo das aufgerufen und dann kommt das was ich bereits im ersten Post geschrieben hatte:
                        stderr:"Wir gehen davon aus, dass der lokale Systemadministrator Ihnen die Regeln erklärt hat. Normalerweise läuft es auf drei ..."
                        stdout:
                        error: "Error: Command failed: /home/iobroker/test.sh Wir gehen davon aus, dass der lokale Systemadministrator Ihnen..."

                        Das Skript wurde natürlich als user pi angelegt und per

                        chown -R iobroker:iobroker test.sh
                        

                        geändert.

                        chmod +x test.sh
                        

                        habe ich bereits getan gehabt. Wie gesagt, in der Shell läuft das Skript normal wie erwartet. Es wurde ins Verzeichnis /home/iobroker getan und wird dennoch nicht von js ausgeführt, bzw mit der oben genannten Fehlermeldung.
                        Der Aufruf mit sudo war einer von vielen Tests die ich im Anschluss getan hatte :(

                        AlCalzoneA Offline
                        AlCalzoneA Offline
                        AlCalzone
                        Developer
                        schrieb am zuletzt editiert von
                        #11

                        @harrym sagte in Exec unter JavaScript führt Shell Script nicht aus:

                        der fixer legt doch den user iobroker in sudoers an

                        Nein, der legt die genannte Datei an, die definiert, welche Befehle iobroker per sudo passwordless ausführen darf.
                        Aus Sicherheitsgründen darf iobroker nur das nötigste per sudo ausführen.

                        @Wal sagte in Exec unter JavaScript führt Shell Script nicht aus:

                        exec("echo 'passwort'|sudo -S dmesg"

                        Wie willst du das machen, wenn der User iobroker kein Passwort hat?

                        @WurstDLX sagte in Exec unter JavaScript führt Shell Script nicht aus:

                        in der Shell läuft das Skript normal wie erwartet.

                        In der Shell bist du sicherlich nicht als iobroker angemeldet oder?

                        Wir gehen davon aus, dass der lokale Systemadministrator Ihnen die Regeln erklärt hat. Normalerweise läuft es auf drei ...

                        Verwendest du sudo im Skript? Dann müssen dem User iobroker alle Kommandos mit sudo passwordless erlaubt werden.

                        Die Suche liefert z.B. folgenden Post:
                        https://forum.iobroker.net/post/356868

                        Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                        WalW W 2 Antworten Letzte Antwort
                        1
                        • W WurstDLX

                          Re: Exec führt .sh nicht aus

                          Hallo, ich würde das Thema erneut aufgreifen wollen. Und zwar versuche ich verzweifelt ein einfaches Skript

                          #!bin/bash
                          mkdir testordner
                          

                          mittels exec auszuführen:

                          function execScript(){
                              exec('sudo /home/iobroker/test.sh', function (error, stdout, stderr) {
                              console.log('stdout: ' + stdout);
                              console.log('stdout: ' + error);
                              });
                          }
                          

                          Als Antwort kommt immer "stdout: Error: Command failed: sudo /home/iobroker/test.sh Wir gehen davon aus, dass der lokale Systemadministrator Ihnen die Regeln erklärt hat. Normalerweise..."

                          Das Skript liegt im Ordner /home/iobroker und ist mittels chown auf den user iobroker gesetzt. chmod+x wurde auch getan. Das Skript läuft über Shell mit Putty anstandslos.

                          Die Varianten mit ./ und sudo und bash habe ich probiert, erfolglos. Die Installation von iobroker ist ca. 4 Monate alt.

                          Danke euch!

                          AlCalzoneA Offline
                          AlCalzoneA Offline
                          AlCalzone
                          Developer
                          schrieb am zuletzt editiert von
                          #12

                          @WurstDLX sagte in Exec unter JavaScript führt Shell Script nicht aus:

                          mkdir testordner

                          Öhhhhhh - hast du mal nen absoluten Pfad probiert?
                          /home/iobroker/testordner

                          Ich bin gerade nicht sicher, in welchem Verzeichnis exec die Befehle ausführt.

                          Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                          1 Antwort Letzte Antwort
                          1
                          • AlCalzoneA AlCalzone

                            @harrym sagte in Exec unter JavaScript führt Shell Script nicht aus:

                            der fixer legt doch den user iobroker in sudoers an

                            Nein, der legt die genannte Datei an, die definiert, welche Befehle iobroker per sudo passwordless ausführen darf.
                            Aus Sicherheitsgründen darf iobroker nur das nötigste per sudo ausführen.

                            @Wal sagte in Exec unter JavaScript führt Shell Script nicht aus:

                            exec("echo 'passwort'|sudo -S dmesg"

                            Wie willst du das machen, wenn der User iobroker kein Passwort hat?

                            @WurstDLX sagte in Exec unter JavaScript führt Shell Script nicht aus:

                            in der Shell läuft das Skript normal wie erwartet.

                            In der Shell bist du sicherlich nicht als iobroker angemeldet oder?

                            Wir gehen davon aus, dass der lokale Systemadministrator Ihnen die Regeln erklärt hat. Normalerweise läuft es auf drei ...

                            Verwendest du sudo im Skript? Dann müssen dem User iobroker alle Kommandos mit sudo passwordless erlaubt werden.

                            Die Suche liefert z.B. folgenden Post:
                            https://forum.iobroker.net/post/356868

                            WalW Online
                            WalW Online
                            Wal
                            Developer
                            schrieb am zuletzt editiert von
                            #13

                            @AlCalzone sagte in Exec unter JavaScript führt Shell Script nicht aus:

                            @Wal sagte in Exec unter JavaScript führt Shell Script nicht aus:

                            exec("echo 'passwort'|sudo -S dmesg"

                            Wie willst du das machen, wenn der User iobroker kein Passwort hat?

                            Stimmt du hast recht, bin jetzt von mir ausgegangen. Ich erstelle vor der Installation von ioBroker immer den User "iobroker".
                            Ich möchte keine anderen User auf meinem Server nur zur Administration.

                            Gruß
                            Walter

                            DoorIO-Adapter
                            wioBrowser-Adapter und wioBrowser

                            1 Antwort Letzte Antwort
                            0
                            • AlCalzoneA AlCalzone

                              @harrym sagte in Exec unter JavaScript führt Shell Script nicht aus:

                              der fixer legt doch den user iobroker in sudoers an

                              Nein, der legt die genannte Datei an, die definiert, welche Befehle iobroker per sudo passwordless ausführen darf.
                              Aus Sicherheitsgründen darf iobroker nur das nötigste per sudo ausführen.

                              @Wal sagte in Exec unter JavaScript führt Shell Script nicht aus:

                              exec("echo 'passwort'|sudo -S dmesg"

                              Wie willst du das machen, wenn der User iobroker kein Passwort hat?

                              @WurstDLX sagte in Exec unter JavaScript führt Shell Script nicht aus:

                              in der Shell läuft das Skript normal wie erwartet.

                              In der Shell bist du sicherlich nicht als iobroker angemeldet oder?

                              Wir gehen davon aus, dass der lokale Systemadministrator Ihnen die Regeln erklärt hat. Normalerweise läuft es auf drei ...

                              Verwendest du sudo im Skript? Dann müssen dem User iobroker alle Kommandos mit sudo passwordless erlaubt werden.

                              Die Suche liefert z.B. folgenden Post:
                              https://forum.iobroker.net/post/356868

                              W Offline
                              W Offline
                              WurstDLX
                              schrieb am zuletzt editiert von
                              #14

                              @AlCalzone
                              Ooh, vor lauter Testerei habe ich das sudo im Skript selbst vergessen :/.
                              Jetzt führt er es aus, nur ist der Fehler diesmal, beim mkdir, dass er keine Berechtigung hat den testordner anzulegen.

                              @AlCalzone DAS WAR ES! Dachte irgendwie er führt das Skript als user iobroker relativ aus, aber vmtl aus seiner js Instanz heraus.

                              Es klappt, wenn man jetzt den Ordner woanders anlegen lassen will, geht das dann überhaupt?

                              Danke euch!!!

                              AlCalzoneA 1 Antwort Letzte Antwort
                              0
                              • W WurstDLX

                                @AlCalzone
                                Ooh, vor lauter Testerei habe ich das sudo im Skript selbst vergessen :/.
                                Jetzt führt er es aus, nur ist der Fehler diesmal, beim mkdir, dass er keine Berechtigung hat den testordner anzulegen.

                                @AlCalzone DAS WAR ES! Dachte irgendwie er führt das Skript als user iobroker relativ aus, aber vmtl aus seiner js Instanz heraus.

                                Es klappt, wenn man jetzt den Ordner woanders anlegen lassen will, geht das dann überhaupt?

                                Danke euch!!!

                                AlCalzoneA Offline
                                AlCalzoneA Offline
                                AlCalzone
                                Developer
                                schrieb am zuletzt editiert von
                                #15

                                @WurstDLX sagte in Exec unter JavaScript führt Shell Script nicht aus:

                                wenn man jetzt den Ordner woanders anlegen lassen will

                                Du könntest sowas probieren:

                                exec("cd /woanders && /home/iobroker/testscript.sh", ...)
                                

                                Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                                1 Antwort Letzte Antwort
                                0
                                Antworten
                                • In einem neuen Thema antworten
                                Anmelden zum Antworten
                                • Älteste zuerst
                                • Neuste zuerst
                                • Meiste Stimmen


                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                890

                                Online

                                32.5k

                                Benutzer

                                81.6k

                                Themen

                                1.3m

                                Beiträge
                                Community
                                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                ioBroker Community 2014-2025
                                logo
                                • Anmelden

                                • Du hast noch kein Konto? Registrieren

                                • Anmelden oder registrieren, um zu suchen
                                • Erster Beitrag
                                  Letzter Beitrag
                                0
                                • Home
                                • Aktuell
                                • Tags
                                • Ungelesen 0
                                • Kategorien
                                • Unreplied
                                • Beliebt
                                • GitHub
                                • Docu
                                • Hilfe