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

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

Gelöst: Exec wird nicht ausgeführt.

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascript
9 Beiträge 3 Kommentatoren 598 Aufrufe 3 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.
  • MaufloM Offline
    MaufloM Offline
    Mauflo
    schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
    0
    • OliverIOO Offline
      OliverIOO Offline
      OliverIO
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      0
      • MaufloM Offline
        MaufloM Offline
        Mauflo
        schrieb am zuletzt editiert von
        #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 Antwort Letzte Antwort
        0
        • OliverIOO Offline
          OliverIOO Offline
          OliverIO
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          0
          • OliverIOO OliverIO

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

            MaufloM Offline
            MaufloM Offline
            Mauflo
            schrieb am zuletzt editiert von
            #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 Antwort Letzte Antwort
            0
            • MaufloM Mauflo

              @OliverIO diese Datei ist leer...

              AlCalzoneA Offline
              AlCalzoneA Offline
              AlCalzone
              Developer
              schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
              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
                schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                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
                  schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                  0
                  • OliverIOO Offline
                    OliverIOO Offline
                    OliverIO
                    schrieb am zuletzt editiert von
                    #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 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

                    477

                    Online

                    32.6k

                    Benutzer

                    82.1k

                    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