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. JavaScript
  5. Gelöst: Exec wird nicht ausgeführt.

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    709

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

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

Gelöst: Exec wird nicht ausgeführt.

Scheduled Pinned Locked Moved JavaScript
javascript
9 Posts 3 Posters 675 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.
  • MaufloM Offline
    MaufloM Offline
    Mauflo
    wrote on last edited by Mauflo
    #1

    Kann mir irgend jemand helfen und sagen warum der Excec - Befehl nicht ausgeführt wird? Als Ergebnis bekam ich heute morgen die Mitteilung, "Swap Speicher hatte 56,21 Megabyte und wurde gelöscht". Tatsächlich wurde aber der Swap Speicher nicht gelöscht. Irgendetwas was ich nicht bedacht hatte? In der SSH Shell funktioniert der Befehl einwandfrei!

    // Lösche den Speicher täglich um 04:10
    schedule('10 4 * * *', function () {
        value  = Math.round(((getState('info.0.sysinfo.memory.info.swapused').val/1024)/1024)*100)/100; // ? swapused in MB
        if(value > 0){
            exec('sudo swapoff -a && swapon -a');
            console.log("Swap Speicher hatte "+value+" Megabyte und wurde gelöscht");
        } else {
            console.log("Swap Speicher hatte "+value+" Megabyte und wurde daher NICHT gelöscht");
        }
    });
    

    Danke für Eure Unterstützung!

    RaspberryPi 4 4 GB - Raspbian light Buster - ARMv7 Processor rev 3 (v7l) - Node.js v12.18.0 - NPM 6.14.4 - Aktive Instanzen 18 (admin, alexa2, backitup, broadlink2, ham-wemo, harmony, history, hs100, hue, info, iot, javascript, radar2, scenes, tr-064, web [2x], wifilight) all latest and updated

    1 Reply Last reply
    0
    • OliverIOO Offline
      OliverIOO Offline
      OliverIO
      wrote on last edited by
      #2

      Ich tippe auf Berechtigung.
      Musst du in der Shell ein Passwort eingeben?
      Mit welchem User arbeitest du in der Shell?
      Mit welchem User ruft Iobroker das auf?
      Hier kannst du schauen wie man Befehle mit Root Access für Script User berechtigt
      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
      • MaufloM Offline
        MaufloM Offline
        Mauflo
        wrote on last edited by
        #3

        Ganz verstehe ich es nicht, denn der EXCEC-Befehl "sudo reboot" funktioniert im folgenden Script ohne Probleme. Der Befehl ist in der viertletzten Zeile:

        //Abfrage Server Reboot
        //==========================================================================================================================
        // Frage ob der Server tatsächlich neu gestartet werden?
        on ({id: 'javascript.0.Konversation.ServerInfos.ServerReboot',val:true}, function (obj) {
        (function () {if (timeout) {clearTimeout(timeout); timeout = null;}})();
            timeout = setTimeout(function () { //damit auch auf jenem Gerät ausgegeben wird, bei dem die Anfrage eingegangen ist
                geraet = getState('alexa2.0.History.serialNumber'/*serialNumber*/).val;
                value = "<speak>Soll ich den Server tatsächlich neu starten?</speak>";
                log("Soll ich den Server tatsächlich neu starten?");
                ssml_antwort(geraet, value);
            }, 1500);
            timeout1 = setTimeout(function () {setState('javascript.0.Konversation.ServerInfos.ServerReboot', false);}, (12000));
        });
        
        //War die Antwort innerhalb von 8 Sekunden "ja"
        on ({id: 'alexa2.0.History.summary',val:"ja"}, function (obj) {
        (function () {if (timeout) {clearTimeout(timeout); timeout = null;}})();
            if (getState('javascript.0.Konversation.ServerInfos.ServerReboot').val == true){    
                timeout = setTimeout(function () { //damit auch auf jenem Gerät ausgegeben wird, bei dem die Anfrage eingegangen ist
                    geraet = getState('alexa2.0.History.serialNumber').val;
                    value = "<speak>OK, Jetzt wird der Server neu gestartet!</speak>";
                    log("OK, Jetzt wird der Server neu gestartet!");
                    ssml_antwort(geraet, value);
                    setState('javascript.0.Konversation.ServerInfos.ServerReboot', false);
                    log("Reboot Flag wurde auf false gesetzt");    
                    log("Neustart wird jetzt ausgeführt");
                    exec('sudo reboot');
                }, 2500);
            };
        });
        //==========================================================================================================================

        RaspberryPi 4 4 GB - Raspbian light Buster - ARMv7 Processor rev 3 (v7l) - Node.js v12.18.0 - NPM 6.14.4 - Aktive Instanzen 18 (admin, alexa2, backitup, broadlink2, ham-wemo, harmony, history, hs100, hue, info, iot, javascript, radar2, scenes, tr-064, web [2x], wifilight) all latest and updated

        1 Reply Last reply
        0
        • OliverIOO Offline
          OliverIOO Offline
          OliverIO
          wrote on last edited by
          #4

          Dann schau mal in die Datei
          /etc/sudoers.d/iobroker

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

          MaufloM 1 Reply Last reply
          0
          • OliverIOO OliverIO

            Dann schau mal in die Datei
            /etc/sudoers.d/iobroker

            MaufloM Offline
            MaufloM Offline
            Mauflo
            wrote on last edited by
            #5

            @OliverIO diese Datei ist leer...

            RaspberryPi 4 4 GB - Raspbian light Buster - ARMv7 Processor rev 3 (v7l) - Node.js v12.18.0 - NPM 6.14.4 - Aktive Instanzen 18 (admin, alexa2, backitup, broadlink2, ham-wemo, harmony, history, hs100, hue, info, iot, javascript, radar2, scenes, tr-064, web [2x], wifilight) all latest and updated

            AlCalzoneA 1 Reply Last reply
            0
            • MaufloM Mauflo

              @OliverIO diese Datei ist leer...

              AlCalzoneA Offline
              AlCalzoneA Offline
              AlCalzone
              Developer
              wrote on last edited by AlCalzone
              #6

              @Mauflo Wie alt ist deine Installation? Bei neueren dürfte diese nicht leer sein. Dann ist es tatsächlich ein Berechtigungsproblem. swapoff / swapon ist nicht in der Liste der erlaubten Befehle. reboot schon. Wie man das hinzufügt, findest du hier im Forum, wurde schon des öfteren diskutiert.

              Abgesehen davon solltest du mit deiner Konsolenausgabe warten, bis der Befehl auch tatsächlich ausgeführt wurde - nutze dazu den Callback von exec.
              Dein Skript versucht den Befehl auszuführen, loggt sofort den Erfolg, aber bekommt gar nicht mit, ob es geklappt hat.

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

              MaufloM 1 Reply Last reply
              0
              • AlCalzoneA AlCalzone

                @Mauflo Wie alt ist deine Installation? Bei neueren dürfte diese nicht leer sein. Dann ist es tatsächlich ein Berechtigungsproblem. swapoff / swapon ist nicht in der Liste der erlaubten Befehle. reboot schon. Wie man das hinzufügt, findest du hier im Forum, wurde schon des öfteren diskutiert.

                Abgesehen davon solltest du mit deiner Konsolenausgabe warten, bis der Befehl auch tatsächlich ausgeführt wurde - nutze dazu den Callback von exec.
                Dein Skript versucht den Befehl auszuführen, loggt sofort den Erfolg, aber bekommt gar nicht mit, ob es geklappt hat.

                MaufloM Offline
                MaufloM Offline
                Mauflo
                wrote on last edited by Mauflo
                #7

                @AlCalzone , na ja so alt ist sie jetzt nicht. Aber ich finde keine Beschreibung dieser Datei. Kannst Du mir vielleicht einen Link angeben, wo ich infos über die Berechtigungen und der Liste der entsprechenden Befehle bekomme? Und danke für den Tip mit der Konsolenausgabe. War tatsächlich nicht sauber programmiert von mir! Danke!

                RaspberryPi 4 4 GB - Raspbian light Buster - ARMv7 Processor rev 3 (v7l) - Node.js v12.18.0 - NPM 6.14.4 - Aktive Instanzen 18 (admin, alexa2, backitup, broadlink2, ham-wemo, harmony, history, hs100, hue, info, iot, javascript, radar2, scenes, tr-064, web [2x], wifilight) all latest and updated

                AlCalzoneA 1 Reply Last reply
                0
                • MaufloM Mauflo

                  @AlCalzone , na ja so alt ist sie jetzt nicht. Aber ich finde keine Beschreibung dieser Datei. Kannst Du mir vielleicht einen Link angeben, wo ich infos über die Berechtigungen und der Liste der entsprechenden Befehle bekomme? Und danke für den Tip mit der Konsolenausgabe. War tatsächlich nicht sauber programmiert von mir! Danke!

                  AlCalzoneA Offline
                  AlCalzoneA Offline
                  AlCalzone
                  Developer
                  wrote on last edited by AlCalzone
                  #8

                  @Mauflo Erscheint eine Ausgabe, wenn du die Datei mit root-Rechten anzeigen lässt?

                  sudo cat /etc/sudoers.d/iobroker
                  

                  Deinen Befehl kannst du folgendermaßen erlauben:
                  Erstelle mit visudo im Ordner /etc/sudoers.d eine eigene Datei, ich nenne sie hier mal custom:

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

                  Füge dort für jeden Befehl, den du erlauben möchtest, folgenden Inhalt ein:

                  iobroker ALL=(ALL) NOPASSWD: /voller/pfad/zum/erlaubten/befehl
                  

                  Den vollständigen Pfad kannst du jeweils mit which befehl ermitteln, also in deinem Fall which swapon und which swapoff.
                  Zum Speichern und Beenden des Editors, drücke ESCAPE und dann gebe :wq ein, gefolgt von ENTER

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

                  1 Reply Last reply
                  0
                  • OliverIOO Offline
                    OliverIOO Offline
                    OliverIO
                    wrote on last edited by
                    #9

                    Zur genauen Funktionsweise von sudo, sudoers kannst du unter dem link, den ich oben von ubuntuusers gepostet habe, nachlesen. Dann verstehst du auch etwas besser welche linux Mechanismen hier wirken.

                    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

                    Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                    Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                    With your input, this post could be even better 💗

                    Register Login
                    Reply
                    • Reply as topic
                    Log in to reply
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes


                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    556

                    Online

                    32.7k

                    Users

                    82.6k

                    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