Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Gelöst] Shell Script lässt sich nicht starten

    NEWS

    • [erledigt] 15. 05. Wartungsarbeiten am ioBroker Forum

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Gelöst] Shell Script lässt sich nicht starten

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

      Hi,

      ich versuche via Javascript ein Shell-Script zu starten und habe als Vorlage das Yeelight Script aus dem Forum genommen, doch irgendwie klappt das überhaupt nicht.

      Folgender Befehl in Putty funktioniert bestens:

      sh backup.sh Dateiname 10 Dateiverzeichnis
      
      
      • Dateiname

      • 10

      • Dateiverzeichnis

      sind Variablen die ich beim Aufruf der backup.sh mit übergeben muss.

      Hier der Javascript Teil der das ganze aufrufen soll:

      // -----------------------------------------------------------------------------
      // allgemeine Variablen
      // -----------------------------------------------------------------------------
      var logging = true;                                        // Logging on/off
      var instanz = 'javascript.0';  instanz = instanz + '.';     // 
                                                                  //
      var pfad0 =   'System.Iobroker.Backup.';                    // Pfad innerhalb der Instanz - Status allgemien
      
      var bash_script = 'bash /opt/iobroker/backup.sh ';          // Pfad zu backup.sh Datei
      
      var loeschen_nach = '10 ';
      var kopie_pfad = 'Dateipfad ';
      var dateiname_anhang='Dateiname ';
      // -----------------------------------------------------------------------------
      // Objekte
      // -----------------------------------------------------------------------------
      
      function backup_erstellen(name, zeit, pfad) {
              exec(([bash_script ,name, zeit, pfad].join('')));
              if(logging) console.log("exec: " + ([bash_script ,name, zeit, pfad].join('')));
      }
      
      backup_erstellen(dateiname_anhang, loeschen_nach, kopie_pfad);
      

      Der Befehlaufruf von exec hab ich übernommen von eben dem genannten Yeelight-Script.

      Hat vielleicht einer Ahnung warum das nicht funktioniert? Und kann man den Befehlaufruf mitloggen wenn man Putty mitlaufen lässt?

      Danke

      Steffen

      1 Reply Last reply Reply Quote 0
      • Dutchman
        Dutchman Developer Most Active Administrators last edited by

        Was sagt dein Log und welche js-adapter Version hast du drauf?

        –-----------------------

        Send from mobile device

        Das schöne ios hat Auto Korrektur zum k****

        Wer Schreibfehler findet darf sie behalten oder auf eBay verkaufen, mindest Umsatz 10% für die community

        1 Reply Last reply Reply Quote 0
        • Peoples
          Peoples last edited by

          der Log von Iobroker sagt:

          javascript.0	2017-12-22 23:46:03.937	info	script.js.Backup_Script: exec: bash /opt/iobroker/backup.sh testname 10
          

          und die Javascript Version ist die 3.4.0

          Da mein Yeelight Script aber funktioniert denke ich nicht dass die Javascriptversion das Problem ist.

          Gruß

          Steffen

          1 Reply Last reply Reply Quote 0
          • paul53
            paul53 last edited by

            @peoples:

            Und kann man den Befehlaufruf mitloggen `
            Versuche es mal mit Callback:

                    exec(([bash_script ,name, zeit, pfad].join('')), function(err, stdout, stderr) {
                      if(err) log(stderr, 'error');
                      else log('exec: ' + stdout);
                    });
            
            
            1 Reply Last reply Reply Quote 0
            • Peoples
              Peoples last edited by

              @paul53:

              Und kann man den Befehlaufruf mitloggen `
              Ja das geht

              Laut dem Log "Backup wird ausgeführt" sollte er das Script ausführen, zumindest bist zum "Backup erstell Befehl", denn die Rückmeldung dass etwas erstellt wurde fehlt:

              javascript.0	2017-12-23 07:15:40.766	info	--- Backup wird ausgefuehrt ---
              javascript.0	2017-12-23 07:15:40.766	info	script.js.Backup_Script: exec:
              javascript.0	2017-12-23 07:15:40.758	info	script.js.Backup_Script: registered 0 subscriptions and 0 schedules
              javascript.0	2017-12-23 07:15:40.738	info	Start javascript script.js.Backup_Script
              

              Wenn ich alles über Putty mache kommt nach der Erstellung noch folgendes:

              Backup created: /opt/iobroker/backups/2017_12_23-07_33_15_backupiobroker.tar.gz
              

              Hab das Shellscript mal auf:

              echo
              #Backup ausführen
              echo --- Backup wird ausgefuehrt ---
              ./iobroker backup
              echo
              
              

              gekürzt was aber auch nicht funktioniert.

              Das Backupscript ist ein Teil des von Knuddel verwendeten (http://forum.iobroker.net/viewtopic.php?f=21&t=9861) sollte somit auch funktionieren.

              Die einzigen Unterschiede sind, dass es bei mir nicht im Unterordner scripts/…. liegt sondern direkt im Iobroker Ordner deshalb spare ich mir den Verzeichnisswechsel und ich möchte es nicht via crontab machen weil ich hier keine Ahnung habe sondern über Javascript um das ganze später mal visualisieren zu können.

              1 Reply Last reply Reply Quote 0
              • andreaskos
                andreaskos last edited by

                Hat der von dir eingesetzte exec-Aufruf Vorteile gegenüber einem einfachen:

                exec("bash /opt/iobroker/backup.sh testname 10");
                
                

                ?

                1 Reply Last reply Reply Quote 0
                • Peoples
                  Peoples last edited by

                  @peoples:

                  Hat der von dir eingesetzte exec-Aufruf Vorteile gegenüber einem einfachen: `

                  Kann ich dir nicht sagen, da ich hier wirklich keine Anhung habe und mir das eben aus einem anderen Script einfach rauskopiert habe.

                  Habe es eben auch mal mit deiner "Version" leider auch Erfolglos probiert.

                  Gruß

                  Steffen

                  1 Reply Last reply Reply Quote 0
                  • Peoples
                    Peoples last edited by

                    So habe es geschafft,

                    hier die kurze Erklärung: Der Aufruf der Backupfunktion mit "./iobroker backup" funktioniert nicht aus JavaScript herraus, wenn man aber "iobroker backup" aufruft gehts.

                    Gruß

                    Steffen

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

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    817
                    Online

                    31.6k
                    Users

                    79.5k
                    Topics

                    1.3m
                    Posts

                    4
                    8
                    2629
                    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