Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. [gelöst] ssh exec führt remote script nicht aus

    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

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

    This topic has been deleted. Only users with topic management privileges can see it.
    • N
      nkoebe last edited by 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

      mickym Thomas Braun 2 Replies Last reply Reply Quote 0
      • mickym
        mickym Most Active @nkoebe last edited by 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 1 Reply Last reply Reply Quote 0
        • Thomas Braun
          Thomas Braun Most Active @nkoebe last edited by

          @nkoebe

          Der Pfad ist falsch:

          ssh.exec('/home/e3dcset/e3dcset
          
          N 1 Reply Last reply Reply Quote 0
          • N
            nkoebe @Thomas Braun last edited by

            @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 Braun 1 Reply Last reply Reply Quote 0
            • Thomas Braun
              Thomas Braun Most Active @nkoebe last edited by

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

              1 Reply Last reply Reply Quote 0
              • N
                nkoebe @mickym last edited by

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

                mickym 1 Reply Last reply Reply Quote 0
                • mickym
                  mickym Most Active @nkoebe last edited by

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

                  1 Reply Last reply Reply Quote 0
                  • N
                    nkoebe last edited by

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

                    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 👏

                    mickym 1 Reply Last reply Reply Quote 1
                    • mickym
                      mickym Most Active @nkoebe last edited by

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

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

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      501
                      Online

                      31.9k
                      Users

                      80.1k
                      Topics

                      1.3m
                      Posts

                      blockly
                      3
                      9
                      499
                      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