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. Blockly
  5. Exec Befehl aus Variablen funktioniert nicht

NEWS

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.3k

Exec Befehl aus Variablen funktioniert nicht

Geplant Angeheftet Gesperrt Verschoben Blockly
blocklyjavascript
7 Beiträge 3 Kommentatoren 658 Aufrufe 2 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.
  • X Offline
    X Offline
    xfinkelx
    schrieb am zuletzt editiert von
    #1

    Hallo, um ein Bild meiner ipcam in ein anderes Verzeichnis zu kopieren, bestimme ich die neueste Datei im Stammverzeichnis und möchte diese dann in ein fixes Verzeichnis kopieren. Da sich der Name des Bildes immer ändert, setzte ich den Kopier-Befehl mit Hilfe von Variablen zusammen. Jedoch wird das Bild nicht kopiert. wenn ich jedoch den generierten Kopier-Befehl aus dem log als Klartext in den exec-Befehl ausführe funktioniert es. Kann mir jemand helfen? Danke!

    Hier der Kopier-Befehl aus Variablen:

    var timeout2, result, pfad, timeout, kopieren;
    
    
    on({id: "MeineDatenpunkte.0.IPCam.Bewegung"/*Bewegung*/, val: true}, function (obj) {
      var value = obj.state.val;
      var oldValue = obj.oldState.val;
      sendTo("telegram", "send", {
          text: 'Bewegung erkannt'
      });
    });
    timeout2 = setTimeout(function () {
      exec('ls /home/xfinkelx/synology/xfinkelx/ipcam/tinycam/rec/ -Art | tail -n 1', function (error, result, stderr) {
          console.log(result);
        pfad = '/home/xfinkelx/synology/xfinkelx/ipcam/tinycam/rec/' + String(result);
        setState("MeineDatenpunkte.0.IPCam.letzte_Datei_tapo"/*letzte_Datei_tapo*/, pfad, true);
        timeout = setTimeout(function () {
          kopieren = ['cp ',getState("MeineDatenpunkte.0.IPCam.letzte_Datei_tapo").val,' /home/xfinkelx/ipcam/tapo/'].join('');
          exec(kopieren);
          console.log("exec: " + kopieren);
          sendTo("telegram", "send", {
              text: (String(getState("MeineDatenpunkte.0.IPCam.letzte_Datei_tapo").val) + '')
          });
          setStateDelayed("MeineDatenpunkte.0.IPCam.Bewegung"/*Bewegung*/, false, 30000, false);
        }, 2000);
      });
      console.log("exec: " + 'ls /home/xfinkelx/synology/xfinkelx/ipcam/tinycam/rec/ -Art | tail -n 1');
    }, 5000);
    
    T X 2 Antworten Letzte Antwort
    0
    • X xfinkelx

      Hallo, um ein Bild meiner ipcam in ein anderes Verzeichnis zu kopieren, bestimme ich die neueste Datei im Stammverzeichnis und möchte diese dann in ein fixes Verzeichnis kopieren. Da sich der Name des Bildes immer ändert, setzte ich den Kopier-Befehl mit Hilfe von Variablen zusammen. Jedoch wird das Bild nicht kopiert. wenn ich jedoch den generierten Kopier-Befehl aus dem log als Klartext in den exec-Befehl ausführe funktioniert es. Kann mir jemand helfen? Danke!

      Hier der Kopier-Befehl aus Variablen:

      var timeout2, result, pfad, timeout, kopieren;
      
      
      on({id: "MeineDatenpunkte.0.IPCam.Bewegung"/*Bewegung*/, val: true}, function (obj) {
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        sendTo("telegram", "send", {
            text: 'Bewegung erkannt'
        });
      });
      timeout2 = setTimeout(function () {
        exec('ls /home/xfinkelx/synology/xfinkelx/ipcam/tinycam/rec/ -Art | tail -n 1', function (error, result, stderr) {
            console.log(result);
          pfad = '/home/xfinkelx/synology/xfinkelx/ipcam/tinycam/rec/' + String(result);
          setState("MeineDatenpunkte.0.IPCam.letzte_Datei_tapo"/*letzte_Datei_tapo*/, pfad, true);
          timeout = setTimeout(function () {
            kopieren = ['cp ',getState("MeineDatenpunkte.0.IPCam.letzte_Datei_tapo").val,' /home/xfinkelx/ipcam/tapo/'].join('');
            exec(kopieren);
            console.log("exec: " + kopieren);
            sendTo("telegram", "send", {
                text: (String(getState("MeineDatenpunkte.0.IPCam.letzte_Datei_tapo").val) + '')
            });
            setStateDelayed("MeineDatenpunkte.0.IPCam.Bewegung"/*Bewegung*/, false, 30000, false);
          }, 2000);
        });
        console.log("exec: " + 'ls /home/xfinkelx/synology/xfinkelx/ipcam/tinycam/rec/ -Art | tail -n 1');
      }, 5000);
      
      T Nicht stören
      T Nicht stören
      ticaki
      schrieb am zuletzt editiert von
      #2

      @xfinkelx
      versuche es mal so:

      kopieren = 'cp ' + getState("MeineDatenpunkte.0.IPCam.letzte_Datei_tapo").val + ' /home/xfinkelx/ipcam/tapo/';
      

      Hab keinen Ahnung woran es scheitert.

      Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

      Spenden

      X 1 Antwort Letzte Antwort
      0
      • T ticaki

        @xfinkelx
        versuche es mal so:

        kopieren = 'cp ' + getState("MeineDatenpunkte.0.IPCam.letzte_Datei_tapo").val + ' /home/xfinkelx/ipcam/tapo/';
        

        Hab keinen Ahnung woran es scheitert.

        X Offline
        X Offline
        xfinkelx
        schrieb am zuletzt editiert von
        #3

        @ticaki
        Danke für die Hilfe, aber es bringt keine Änderung.

        1 Antwort Letzte Antwort
        0
        • X xfinkelx

          Hallo, um ein Bild meiner ipcam in ein anderes Verzeichnis zu kopieren, bestimme ich die neueste Datei im Stammverzeichnis und möchte diese dann in ein fixes Verzeichnis kopieren. Da sich der Name des Bildes immer ändert, setzte ich den Kopier-Befehl mit Hilfe von Variablen zusammen. Jedoch wird das Bild nicht kopiert. wenn ich jedoch den generierten Kopier-Befehl aus dem log als Klartext in den exec-Befehl ausführe funktioniert es. Kann mir jemand helfen? Danke!

          Hier der Kopier-Befehl aus Variablen:

          var timeout2, result, pfad, timeout, kopieren;
          
          
          on({id: "MeineDatenpunkte.0.IPCam.Bewegung"/*Bewegung*/, val: true}, function (obj) {
            var value = obj.state.val;
            var oldValue = obj.oldState.val;
            sendTo("telegram", "send", {
                text: 'Bewegung erkannt'
            });
          });
          timeout2 = setTimeout(function () {
            exec('ls /home/xfinkelx/synology/xfinkelx/ipcam/tinycam/rec/ -Art | tail -n 1', function (error, result, stderr) {
                console.log(result);
              pfad = '/home/xfinkelx/synology/xfinkelx/ipcam/tinycam/rec/' + String(result);
              setState("MeineDatenpunkte.0.IPCam.letzte_Datei_tapo"/*letzte_Datei_tapo*/, pfad, true);
              timeout = setTimeout(function () {
                kopieren = ['cp ',getState("MeineDatenpunkte.0.IPCam.letzte_Datei_tapo").val,' /home/xfinkelx/ipcam/tapo/'].join('');
                exec(kopieren);
                console.log("exec: " + kopieren);
                sendTo("telegram", "send", {
                    text: (String(getState("MeineDatenpunkte.0.IPCam.letzte_Datei_tapo").val) + '')
                });
                setStateDelayed("MeineDatenpunkte.0.IPCam.Bewegung"/*Bewegung*/, false, 30000, false);
              }, 2000);
            });
            console.log("exec: " + 'ls /home/xfinkelx/synology/xfinkelx/ipcam/tinycam/rec/ -Art | tail -n 1');
          }, 5000);
          
          X Offline
          X Offline
          xfinkelx
          schrieb am zuletzt editiert von xfinkelx
          #4

          @xfinkelx

          Re: Exec Befehl aus Variablen funktioniert nicht

          Also ich habe noch ein wenig rumprobiert und festgestellt, dass zusammengesetzte Exec-Befehle bei mir grundsätzlich nicht funktionieren, ob mit oder ohne Variable spielt keine Rolle.

          so liefert mir folgendes Script ein Ergebnis (Download6.png):

          var result;
          
          
          exec('ls /home/xfinkelx/synology/xfinkelx/ipcam/tinycam/rec/ -Art | tail -n 1', function (error, result, stderr) {
              console.log(result);
          });
          console.log("exec: " + 'ls /home/xfinkelx/synology/xfinkelx/ipcam/tinycam/rec/ -Art | tail -n 1');
          
          

          und folgendes Script liefert kein Ergebnis:

          var result;
          
          
          exec((['ls','/home/xfinkelx/synology/xfinkelx/ipcam/tinycam/rec/','-Art | tail -n 1'].join('')), function (error, result, stderr) {
              console.log(result);
          });
          console.log("exec: " + (['ls','/home/xfinkelx/synology/xfinkelx/ipcam/tinycam/rec/','-Art | tail -n 1'].join('')));
          
          

          Im log sehen jedoch Beide Befehle identisch aus...

          javascript.0 2020-05-15 11:05:13.547 info (1609) script.js.MeineSkripte.Tests.test_exec1:
          javascript.0 2020-05-15 11:05:13.539 info (1609) script.js.MeineSkripte.Tests.test_exec1: registered 0 subscriptions and 0 schedules
          javascript.0 2020-05-15 11:05:13.538 info (1609) script.js.MeineSkripte.Tests.test_exec1: exec: ls /home/xfinkelx/synology/xfinkelx/ipcam/tinycam/rec/ -Art | tail -n 1
          javascript.0 2020-05-15 11:05:13.494 info (1609) Start javascript script.js.MeineSkripte.Tests.test_exec1
          javascript.0 2020-05-15 11:05:12.522 info (1609) Stop script script.js.MeineSkripte.Tests.test_exec1
          javascript.0 2020-05-15 11:05:05.389 info (1609) script.js.MeineSkripte.Tests.test_exec: Download6.png
          javascript.0 2020-05-15 11:05:05.351 info (1609) script.js.MeineSkripte.Tests.test_exec: registered 0 subscriptions and 0 schedules
          javascript.0 2020-05-15 11:05:05.350 info (1609) script.js.MeineSkripte.Tests.test_exec: exec: ls /home/xfinkelx/synology/xfinkelx/ipcam/tinycam/rec/ -Art | tail -n 1
          javascript.0 2020-05-15 11:05:05.314 info (1609) Start javascript script.js.MeineSkripte.Tests.test_exec
          javascript.0 2020-05-15 11:05:01.155 info (1609) Stop script script.js.MeineSkripte.Tests.test_exec

          ...verstehe ich nicht...

          1 Antwort Letzte Antwort
          0
          • Ralla66R Offline
            Ralla66R Offline
            Ralla66
            Most Active
            schrieb am zuletzt editiert von Ralla66
            #5

            @xfinkelx
            , ist dir aufgefallen ? 'ls','/home

            X 1 Antwort Letzte Antwort
            0
            • Ralla66R Ralla66

              @xfinkelx
              , ist dir aufgefallen ? 'ls','/home

              X Offline
              X Offline
              xfinkelx
              schrieb am zuletzt editiert von
              #6

              @Ralla66
              ja, das war ein Fehler meinerseits.
              Ersetze ich jetzt aber einen der 3 Textbausteine durch eine vorher definierte Variable oder Datenpunkt wird der Befehl nicht mehr ausgeführt.

              T 1 Antwort Letzte Antwort
              0
              • X xfinkelx

                @Ralla66
                ja, das war ein Fehler meinerseits.
                Ersetze ich jetzt aber einen der 3 Textbausteine durch eine vorher definierte Variable oder Datenpunkt wird der Befehl nicht mehr ausgeführt.

                T Nicht stören
                T Nicht stören
                ticaki
                schrieb am zuletzt editiert von ticaki
                #7

                @xfinkelx

                folgendes funktioniert bei mir:

                var cmd = 'ls -l ' + '/home/';
                exec(cmd, (a,b,c)=> {log(b)});
                

                sowie das hier:

                var test = [' ','home',' '].join('/');
                var cmd = 'ls -l' + test;
                exec(cmd, (a,b,c)=> {log(b)});
                

                @xfinkelx sagte in Exec Befehl aus Variablen funktioniert nicht:

                @Ralla66
                ja, das war ein Fehler meinerseits.
                Ersetze ich jetzt aber einen der 3 Textbausteine durch eine vorher definierte Variable oder Datenpunkt wird der Befehl nicht mehr ausgeführt.

                Dir ist aufgefallen das -Art auch kein Leerzeichen hat?

                mach in den Callback noch ein

                if (a || c) throw (a?a:'' + c?c:'');});
                

                mit deinen Bezeichnern zum Fehler finden rein.

                Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                Spenden

                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

                844

                Online

                32.4k

                Benutzer

                81.5k

                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