Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Exec Befehl aus Variablen funktioniert nicht

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Exec Befehl aus Variablen funktioniert nicht

    This topic has been deleted. Only users with topic management privileges can see it.
    • X
      xfinkelx last edited by

      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 Reply Quote 0
      • T
        ticaki Developer @xfinkelx last edited by

        @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 1 Reply Last reply Reply Quote 0
        • X
          xfinkelx @ticaki last edited by

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

          1 Reply Last reply Reply Quote 0
          • X
            xfinkelx @xfinkelx last edited by xfinkelx

            @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 Reply Quote 0
            • Ralla66
              Ralla66 Most Active last edited by Ralla66

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

              X 1 Reply Last reply Reply Quote 0
              • X
                xfinkelx @Ralla66 last edited by

                @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 Reply Quote 0
                • T
                  ticaki Developer @xfinkelx last edited by ticaki

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

                  1 Reply Last reply Reply Quote 0
                  • First post
                    Last post

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  602
                  Online

                  31.8k
                  Users

                  80.0k
                  Topics

                  1.3m
                  Posts

                  blockly javascript
                  3
                  7
                  533
                  Loading More Posts
                  • Oldest to Newest
                  • Newest to Oldest
                  • Most Votes
                  Reply
                  • Reply as topic
                  Log in to reply
                  Community
                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                  The ioBroker Community 2014-2023
                  logo