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. [gelöst] ssh exec führt remote script nicht aus

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    23
    1
    1.3k

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.5k

[gelöst] ssh exec führt remote script nicht aus

Geplant Angeheftet Gesperrt Verschoben Blockly
blockly
9 Beiträge 3 Kommentatoren 831 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.
  • N Offline
    N Offline
    nkoebe
    schrieb am zuletzt editiert von nkoebe
    #1

    Hallo zusammen,

    ich habe versucht, in den bestehenden Beiträgen Hilfe zu finden, aber es will bei mir nicht klappen.
    Ich möchte aus dem blockly heraus ein script auf einem anderen raspi ausführen.
    Einfache Befehle (ls, whoami etc.) und auch ein test.sh mit einfachen Befehlen werden ausgeführt, aber nicht das eigentliche script.

    mein ssh exec sieht so aus:

    var SSH = require('simple-ssh');
    var ssh = new SSH({
        host: 'remoteIP',
        user: 'pi',
        pass: 'pwd'
    });
    
    ssh.exec('/home/e3dcset/e3dcset', {
        out: function (stdout) {
            console.log(stdout);
            setState('0_userdata.0.test', stdout);
        }
    }, ).start();
    


    Das Script ist in folgendem Ordner und Berechtigungen:

    -rwxr-xr-x 1 pi pi 90964 Nov  7 12:20 e3dcset
    

    Wenn ich das Script lokal in einer shell aufrufe, gibt es keine Probleme:

    pi@raspberrypi:~ $ /home/pi/e3dcset/e3dcset
    
       Usage: e3dcset [-c LadeLeistung] [-d EntladeLeistung] [-e LadungsMenge] [-a] [-p Pfad zur Konfigurationsdatei]
    

    In einem Beitrag wurde geschrieben, dass iobroker die Javascripte mit dem user "iobroker" ausführt, aber in dem exec gebe ich ihm ja den user "pi" mit, wenn ich über das exec den Befehl "whoami" absetze kommt auch "pi" zurück.
    Wo liegt der Fehler? Kann mir jemand helfen?

    Danke und Gruß

    Nils

    mickymM Thomas BraunT 2 Antworten Letzte Antwort
    0
    • N nkoebe

      Hallo zusammen,

      ich habe versucht, in den bestehenden Beiträgen Hilfe zu finden, aber es will bei mir nicht klappen.
      Ich möchte aus dem blockly heraus ein script auf einem anderen raspi ausführen.
      Einfache Befehle (ls, whoami etc.) und auch ein test.sh mit einfachen Befehlen werden ausgeführt, aber nicht das eigentliche script.

      mein ssh exec sieht so aus:

      var SSH = require('simple-ssh');
      var ssh = new SSH({
          host: 'remoteIP',
          user: 'pi',
          pass: 'pwd'
      });
      
      ssh.exec('/home/e3dcset/e3dcset', {
          out: function (stdout) {
              console.log(stdout);
              setState('0_userdata.0.test', stdout);
          }
      }, ).start();
      


      Das Script ist in folgendem Ordner und Berechtigungen:

      -rwxr-xr-x 1 pi pi 90964 Nov  7 12:20 e3dcset
      

      Wenn ich das Script lokal in einer shell aufrufe, gibt es keine Probleme:

      pi@raspberrypi:~ $ /home/pi/e3dcset/e3dcset
      
         Usage: e3dcset [-c LadeLeistung] [-d EntladeLeistung] [-e LadungsMenge] [-a] [-p Pfad zur Konfigurationsdatei]
      

      In einem Beitrag wurde geschrieben, dass iobroker die Javascripte mit dem user "iobroker" ausführt, aber in dem exec gebe ich ihm ja den user "pi" mit, wenn ich über das exec den Befehl "whoami" absetze kommt auch "pi" zurück.
      Wo liegt der Fehler? Kann mir jemand helfen?

      Danke und Gruß

      Nils

      mickymM Offline
      mickymM Offline
      mickym
      Most Active
      schrieb am zuletzt editiert von mickym
      #2

      @nkoebe Wenn Du aus dem iobroker ein Skript aufrufst, arbeitest Du mit dem user iobroker und nicht mit pi. Also musst Du dem user iobroker die Rechte geben.

      Am Besten prüfst Du das indem Du das Skript versuchst über den User iobroker im Terminal auszuführen.

      sudo -su iobroker
      /home/pi/e3dcset/e3dcset
      

      Wenn Du über remote ssh und den user pi das Ganze ausführen willst, dann musst Du die credentials des users pi im Homeverzeichnis des User iobroker ablegen.

      ~/.ssh $ ls -la
      insgesamt 28
      drwx------  2 iobroker iobroker 4096 29. Apr 2024  .
      drwxr-xr-x 14 iobroker iobroker 4096 16. Okt 13:31 ..
      -rw-------  1 iobroker iobroker 3381 30. Dez 2023  id_rsa
      -rw-r--r--  1 iobroker iobroker  741 30. Dez 2023  id_rsa.pub
      -rw-------  1 iobroker iobroker 4860 29. Apr 2024  known_hosts
      

      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

      N 1 Antwort Letzte Antwort
      0
      • N nkoebe

        Hallo zusammen,

        ich habe versucht, in den bestehenden Beiträgen Hilfe zu finden, aber es will bei mir nicht klappen.
        Ich möchte aus dem blockly heraus ein script auf einem anderen raspi ausführen.
        Einfache Befehle (ls, whoami etc.) und auch ein test.sh mit einfachen Befehlen werden ausgeführt, aber nicht das eigentliche script.

        mein ssh exec sieht so aus:

        var SSH = require('simple-ssh');
        var ssh = new SSH({
            host: 'remoteIP',
            user: 'pi',
            pass: 'pwd'
        });
        
        ssh.exec('/home/e3dcset/e3dcset', {
            out: function (stdout) {
                console.log(stdout);
                setState('0_userdata.0.test', stdout);
            }
        }, ).start();
        


        Das Script ist in folgendem Ordner und Berechtigungen:

        -rwxr-xr-x 1 pi pi 90964 Nov  7 12:20 e3dcset
        

        Wenn ich das Script lokal in einer shell aufrufe, gibt es keine Probleme:

        pi@raspberrypi:~ $ /home/pi/e3dcset/e3dcset
        
           Usage: e3dcset [-c LadeLeistung] [-d EntladeLeistung] [-e LadungsMenge] [-a] [-p Pfad zur Konfigurationsdatei]
        

        In einem Beitrag wurde geschrieben, dass iobroker die Javascripte mit dem user "iobroker" ausführt, aber in dem exec gebe ich ihm ja den user "pi" mit, wenn ich über das exec den Befehl "whoami" absetze kommt auch "pi" zurück.
        Wo liegt der Fehler? Kann mir jemand helfen?

        Danke und Gruß

        Nils

        Thomas BraunT Online
        Thomas BraunT Online
        Thomas Braun
        Most Active
        schrieb am zuletzt editiert von
        #3

        @nkoebe

        Der Pfad ist falsch:

        ssh.exec('/home/e3dcset/e3dcset
        

        Linux-Werkzeugkasten:
        https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
        NodeJS Fixer Skript:
        https://forum.iobroker.net/topic/68035/iob-node-fix-skript
        iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

        N 1 Antwort Letzte Antwort
        0
        • Thomas BraunT Thomas Braun

          @nkoebe

          Der Pfad ist falsch:

          ssh.exec('/home/e3dcset/e3dcset
          
          N Offline
          N Offline
          nkoebe
          schrieb am zuletzt editiert von
          #4

          @thomas-braun richtig, da hatte ich den Pfad falsch angegeben, den hatte ich für den post hier eingetippt, Im script ist er richtig gewesen

          @mickym mit dem iobroker user geht es lokal auch:

          pi@raspberrypi:~/e3dcset $ sudo -su iobroker
          iobroker@raspberrypi:/home/pi $ /home/pi/e3dcset/e3dcset
          
             Usage: e3dcset [-c LadeLeistung] [-d EntladeLeistung] [-e LadungsMenge] [-a] [-p Pfad zur Konfigurationsdatei]
          
          

          Ich probiere jetzt trotzdem das mit den credentials einzurichten.
          Danke schonmal für die Antworten.

          Thomas BraunT 1 Antwort Letzte Antwort
          0
          • N nkoebe

            @thomas-braun richtig, da hatte ich den Pfad falsch angegeben, den hatte ich für den post hier eingetippt, Im script ist er richtig gewesen

            @mickym mit dem iobroker user geht es lokal auch:

            pi@raspberrypi:~/e3dcset $ sudo -su iobroker
            iobroker@raspberrypi:/home/pi $ /home/pi/e3dcset/e3dcset
            
               Usage: e3dcset [-c LadeLeistung] [-d EntladeLeistung] [-e LadungsMenge] [-a] [-p Pfad zur Konfigurationsdatei]
            
            

            Ich probiere jetzt trotzdem das mit den credentials einzurichten.
            Danke schonmal für die Antworten.

            Thomas BraunT Online
            Thomas BraunT Online
            Thomas Braun
            Most Active
            schrieb am zuletzt editiert von
            #5

            @nkoebe sagte in ssh exec führt remote script nicht aus:

            den hatte ich für den post hier eingetippt,

            Dann gewöhn dir bitte an sowas zu kopieren und nicht abzupinnen. Ist zu fehlerträchtig und führt zu falschen Diagnosen.

            Linux-Werkzeugkasten:
            https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
            NodeJS Fixer Skript:
            https://forum.iobroker.net/topic/68035/iob-node-fix-skript
            iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

            1 Antwort Letzte Antwort
            0
            • mickymM mickym

              @nkoebe Wenn Du aus dem iobroker ein Skript aufrufst, arbeitest Du mit dem user iobroker und nicht mit pi. Also musst Du dem user iobroker die Rechte geben.

              Am Besten prüfst Du das indem Du das Skript versuchst über den User iobroker im Terminal auszuführen.

              sudo -su iobroker
              /home/pi/e3dcset/e3dcset
              

              Wenn Du über remote ssh und den user pi das Ganze ausführen willst, dann musst Du die credentials des users pi im Homeverzeichnis des User iobroker ablegen.

              ~/.ssh $ ls -la
              insgesamt 28
              drwx------  2 iobroker iobroker 4096 29. Apr 2024  .
              drwxr-xr-x 14 iobroker iobroker 4096 16. Okt 13:31 ..
              -rw-------  1 iobroker iobroker 3381 30. Dez 2023  id_rsa
              -rw-r--r--  1 iobroker iobroker  741 30. Dez 2023  id_rsa.pub
              -rw-------  1 iobroker iobroker 4860 29. Apr 2024  known_hosts
              
              N Offline
              N Offline
              nkoebe
              schrieb am zuletzt editiert von
              #6

              @mickym said in ssh exec führt remote script nicht aus:

              Wenn Du über remote ssh und den user pi das Ganze ausführen willst, dann musst Du die credentials des users pi im Homeverzeichnis des User iobroker ablegen.

              Ich bin mir nicht sicher, ob ich das korrekt verstanden habe.
              Soll ich jetzt per scp die Dateien aus dem .ssh Verzeichnis des pi users in das .ssh Verzeichnis des iobroker users kopieren?
              Das hat leider keine Besserung gebracht...

              Ich kann immer noch nicht nachvollziehen, wieso alles andere funktioniert, nur nicht das gewünschte Programm.
              Alles andere funktioniert über ssh.exec, whoami gibt pi aus, Verzeichnis über mkdir anlegen klappt, shell scripte ausführen auch, nur nicht das e3dcset.

              Der blockly Funktion gibt man ja auch den user pi beim Erzeugen der ssh variable mit.

              Eben ist mir aufgefallen, dass es ja kein .sh ist, sondern ein binary, was ich ausführen möchte, kann es etwas damit zutun haben?

              mickymM 1 Antwort Letzte Antwort
              0
              • N nkoebe

                @mickym said in ssh exec führt remote script nicht aus:

                Wenn Du über remote ssh und den user pi das Ganze ausführen willst, dann musst Du die credentials des users pi im Homeverzeichnis des User iobroker ablegen.

                Ich bin mir nicht sicher, ob ich das korrekt verstanden habe.
                Soll ich jetzt per scp die Dateien aus dem .ssh Verzeichnis des pi users in das .ssh Verzeichnis des iobroker users kopieren?
                Das hat leider keine Besserung gebracht...

                Ich kann immer noch nicht nachvollziehen, wieso alles andere funktioniert, nur nicht das gewünschte Programm.
                Alles andere funktioniert über ssh.exec, whoami gibt pi aus, Verzeichnis über mkdir anlegen klappt, shell scripte ausführen auch, nur nicht das e3dcset.

                Der blockly Funktion gibt man ja auch den user pi beim Erzeugen der ssh variable mit.

                Eben ist mir aufgefallen, dass es ja kein .sh ist, sondern ein binary, was ich ausführen möchte, kann es etwas damit zutun haben?

                mickymM Offline
                mickymM Offline
                mickym
                Most Active
                schrieb am zuletzt editiert von
                #7

                @nkoebe Nicht nur kopieren, sondern natürlich auch die Rechte anpassen. Es muss in das Homeverzeichnis des iobroker Users.
                Generell einfach unter dem User iobroker prüfen, ob der Aufruf klappt.

                Unter dem User iobroker, dann den User pi mitgeben:

                sudo -su iobroker
                ssh pi@<IPAdresse des RemoteSystems> /home/pi/e3dcset/e3dcset
                

                Ich habe die SSH Konfig unter iobroker Homeverzeichnis für den User PI auf dem Fremdsystem durchgeführt. (Anleitungen gibts ja genug).

                Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                1 Antwort Letzte Antwort
                0
                • N Offline
                  N Offline
                  nkoebe
                  schrieb am zuletzt editiert von
                  #8

                  @mickym vielen Dank, es hat jetzt geklappt!

                  Ich habe wie unter https://linuxize.com/post/how-to-setup-passwordless-ssh-login/ auf dem iobroker raspi für den user iobroker einen ssh key erzeugt und über ssh-copy-id zum user pi auf den anderen raspi kopiert.
                  Damit kann sich der user iobroker jetzt ohne Passwort per ssh auf dem raspi als user pi anmelden und der Aufruf des Programms klappt endlich im Blockly. :+1:

                  Ich verstehe nur nicht, wozu ich im Blockly die ssh user Angaben mache, wenn ich es dann nachher noch über das keyfile regeln muss :(

                  Vielen Dank für die Unterstützung und die Geduld :clap:

                  mickymM 1 Antwort Letzte Antwort
                  1
                  • N nkoebe

                    @mickym vielen Dank, es hat jetzt geklappt!

                    Ich habe wie unter https://linuxize.com/post/how-to-setup-passwordless-ssh-login/ auf dem iobroker raspi für den user iobroker einen ssh key erzeugt und über ssh-copy-id zum user pi auf den anderen raspi kopiert.
                    Damit kann sich der user iobroker jetzt ohne Passwort per ssh auf dem raspi als user pi anmelden und der Aufruf des Programms klappt endlich im Blockly. :+1:

                    Ich verstehe nur nicht, wozu ich im Blockly die ssh user Angaben mache, wenn ich es dann nachher noch über das keyfile regeln muss :(

                    Vielen Dank für die Unterstützung und die Geduld :clap:

                    mickymM Offline
                    mickymM Offline
                    mickym
                    Most Active
                    schrieb am zuletzt editiert von
                    #9

                    @nkoebe Genau die Anleitung habe ich gesucht - die habe ich damals auch genutzt. Bei mir hat der Link aber nicht mehr geklappt. Ich hab es mir gleich nochmal abgespeichert.

                    Ich nutze kein Blockly, sondern NodeRed. Also wenn was in Blockly nicht klappt, dann musst Du eher @paul53 fragen.

                    Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                    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

                    808

                    Online

                    32.5k

                    Benutzer

                    81.7k

                    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