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. 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

Scheduled Pinned Locked Moved Blockly
blocklyjavascript
7 Posts 3 Posters 658 Views 2 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.
  • X Offline
    X Offline
    xfinkelx
    wrote on last edited by
    #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 Replies Last reply
    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 Do not disturb
      T Do not disturb
      ticaki
      wrote on last edited by
      #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 Reply Last reply
      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
        wrote on last edited by
        #3

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

        1 Reply Last reply
        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
          wrote on last edited by 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 Reply Last reply
          0
          • Ralla66R Offline
            Ralla66R Offline
            Ralla66
            Most Active
            wrote on last edited by Ralla66
            #5

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

            X 1 Reply Last reply
            0
            • Ralla66R Ralla66

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

              X Offline
              X Offline
              xfinkelx
              wrote on last edited by
              #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 Reply Last reply
              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 Do not disturb
                T Do not disturb
                ticaki
                wrote on last edited by 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 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

                885

                Online

                32.4k

                Users

                81.5k

                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