Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst] Blockly - per ssh an anderen Rechner und script ausführen

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [gelöst] Blockly - per ssh an anderen Rechner und script ausführen

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

      Hallo Dutchman

      ~~

      Funktioniert perfekt bis auf den exec Block.

      Im Terminal funktioniert es.~~ 7243_raspi3.jpg

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

        @kutscher:

        Hallo Dutchman

        https://picload.org/view/doolggcr/raspi3.jpg.html

        Funktioniert perfekt bis auf den exec Block.

        Im Terminal funktioniert es. `

        Bilder bitte ins Forum uploaden anstatt externer Seite :-).

        Mach Mal den Haken an bei "mit Ergebnis" und Dan einen debug block mit der variable "result". Was kommt dan im Log ?

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

        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
        • wendy2702
          wendy2702 last edited by

          Hilft das vielleicht weiter:

          viewtopic.php?f=8&t=12704

          1 Reply Last reply Reply Quote 0
          • K
            kutscher last edited by

            Danke für die Tipps.

            Kann es erst heute Abend testen.

            Melde mich dann nochmal.

            LG

            1 Reply Last reply Reply Quote 0
            • K
              kutscher last edited by

              Habe die Lösung für mich gefunden 😄

              Der funktionierende exec Befehl lautet, für einen Neustart

              su pi -c "ssh raspi3 sudo shutdown -r 0"
              

              oder zum runterfahren

              su pi -c "ssh raspi3 sudo shutdown -h 0"
              

              7243_raspi3_ok.jpg

              F 1 Reply Last reply Reply Quote 0
              • B
                Buhu91 last edited by

                Hey, ich wollte auch sowas per Blockly ausführen.
                Jedoch verstehe ich nicht warum man oben z.b. für den SSH befehl nur "pi 3" eingeben kann.
                Ich dachte dafür müsste ich die IP Adresse, und Benutzer+ PW eingeben.

                Kann mir da einer helfen, will einen PI auf dem kein IOB läuft herunterfahren auf befehl.

                1 Reply Last reply Reply Quote 0
                • SBorg
                  SBorg Forum Testing Most Active @kutscher last edited by

                  Deswegen:
                  @kutscher sagte in [gelöst] Blockly - per ssh an anderen Rechner und script ausführen:

                  Ich benutze einen Public-Key, ein Passwort wird nicht abgefragt.

                  sonst musst du eben auch ein Passwort eingeben (funktioniert aber im Blockly nicht). "raspi3" funktioniert nur bei einem korrekt eingerichtetem Netzwerk mit DNS, sonst muss man halt die IP nutzen.

                  B 1 Reply Last reply Reply Quote 0
                  • B
                    Buhu91 @SBorg last edited by

                    @SBorg
                    Ach verstehe, das ist eigentlich der Hostname.
                    Ich hatte versucht das mit einem Script zu machen, aber mein JS adapter installiert keine zusätzlichen NPM Module wie Simple-ssh. Brauche ich das hier in dem fall auch trotzdem oder geht das ohne?

                    1 Reply Last reply Reply Quote 0
                    • SBorg
                      SBorg Forum Testing Most Active last edited by

                      @Buhu91 sagte in [gelöst] Blockly - per ssh an anderen Rechner und script ausführen:

                      Ach verstehe, das ist eigentlich der Hostname.

                      Genau 🙂
                      ssh ist eigentlich bei den meisten Distris von Hause aus installiert. Wenn in der shell der Aufruf von ssh zu einer Ausgabe der Hilfe führt brauchst du sonst nix anderes mehr.

                      1 Reply Last reply Reply Quote 0
                      • F
                        FrY @kutscher last edited by

                        @kutscher Ich muss hier nochmal drauf zurückkommen.

                        Ich versuche 433 MHz Steckdosen zu steuern. Ausgangslage:

                        1x Raspi A mit ioBroker
                        1x Raspi B mit dem 433 MHz Adapter

                        Wenn ich aus dem Terminal den folgenden Befehl aufrufe, funktioniert es; der Raspi A verbindet sich Raspi B und führt den Befehl aus:

                        ssh pi@RaspiB '/home/pi/raspberry-remote/send 11111 1 1'
                        

                        Eine Anmeldung erhalte ich nicht, da ich mich per Zertifikat anmelde.

                        Füge ich den Block als Exec in Blockly ein, wird nichts ausgeführt:
                        38d428bd-283f-4234-bdef-72ff2678d7f6-image.png

                        Ich habe jetzt alle Varianten durch... auch mit deinem Befehl "su pi -c "befehl". Keine Chance. Tippe ich diesen Befehl übrigens im Terminal ein, erhalte ich eine Passwortabfrage. Warum eigentlich? Ist doch per Zertifikat authentifiziert.

                        Wäre um einen Tipp dankbar.

                        AlCalzone LukyLuke 2 Replies Last reply Reply Quote 0
                        • AlCalzone
                          AlCalzone Developer @FrY last edited by AlCalzone

                          @FrY Setz mal den Haken bei "mit Ergebnissen" und logge die Ausgabe des Befehls, die dem Callback übergeben wird.

                          Ist doch per Zertifikat authentifiziert.

                          Hast du das Zertifikat auch so abgelegt, dass es für den user iobroker (der den ssh-Befehl nämlich auf Raspi A ausführt) lesbar ist? Das Thema hatten wir vor einer Weile schon mal, da hat es nach dieser Änderung auch funktioniert:

                          https://forum.iobroker.net/topic/22841/jede-minute-ein-bild-downloaden-und-per-sftp-uploaden-mit-zeitstempel-im-namen-geht-das/11

                          1 Reply Last reply Reply Quote 0
                          • AlCalzone
                            AlCalzone Developer last edited by AlCalzone

                            Alternativ kann man auch ohne exec SSH-Befehle absetzen:
                            https://forum.iobroker.net/topic/12470/gelöst-befehl-an-raspi/7
                            Hier müsstest du statt Passwort das Zertifikat eingeben. Ein Beispiel dafür ist hier zu finden: https://www.npmjs.com/package/ssh2#execute-uptime-on-a-server

                            // ...
                            .connect({
                              host: '192.168.100.100',
                              port: 22,
                              username: 'frylock',
                              privateKey: require('fs').readFileSync('/here/is/my/key')
                              // ^-- lädt das Zertifikat
                            });
                            
                            1 Reply Last reply Reply Quote 0
                            • LukyLuke
                              LukyLuke @FrY last edited by LukyLuke

                              @FrY Ich habe genau das Gleiche vor wie du.
                              Pi 1 mit iobroker als Host soll sich auf Pi2 mit dem 433 MHz Adapter einloggen und ein .sh skript starten. In der shell klappt das problemlos. Mit javascript oder blockly klappts nicht .... ich raffs einfach nicht was da schief läuft.

                              Könntest du mir bitte genau erklären was ich machen muss damit das läuft?
                              Anmeldung erfolgt auch bei mir per Zertifikat.

                              AlCalzone 1 Reply Last reply Reply Quote 0
                              • AlCalzone
                                AlCalzone Developer @LukyLuke last edited by

                                @LukyLuke sagte in [gelöst] Blockly - per ssh an anderen Rechner und script ausführen:

                                In der shell klappt das problemlos.

                                "Melde" dich mal als der User iobroker an und probiere es dann auf der Konsole:
                                su -u iobroker -s /bin/bash

                                Ich wette, dass der User kein Zertifikat hat, mit dem du dich auf dem zweiten Host einloggen kannst. Hinterlege eins, dann gehts auch aus ioBroker heraus.

                                LukyLuke wauzzi 2 Replies Last reply Reply Quote 1
                                • LukyLuke
                                  LukyLuke @AlCalzone last edited by

                                  @AlCalzone
                                  ich danke dir!!!
                                  Habe mich heute nochmal dem Problem gewidmet. Der user "iobroker" hatte keine Rechte für ssh in der /etc/passwd. Somit konnte ich mich mittels Konsole überhaupt nicht als iobroker anmelden. Hab /sbin/nologin geändert in /bin/bash. Dann gings. Ohne deinen Tipp wäre ich da nicht so schnell drauf gekommen.

                                  Vielen Dank! 👍

                                  AlCalzone 1 Reply Last reply Reply Quote 0
                                  • AlCalzone
                                    AlCalzone Developer @LukyLuke last edited by

                                    @LukyLuke sagte in [gelöst] Blockly - per ssh an anderen Rechner und script ausführen:

                                    Somit konnte ich mich mittels Konsole überhaupt nicht als iobroker anmelden. Hab /sbin/nologin geändert in /bin/bash.

                                    Das ist auch nicht vorgesehen, da man bis auf wenige Ausnahmen nicht als dieser User arbeiten sollte.
                                    Stattdessen sollte man sich als root oder sonstiger User anmelden und mittels (sudo) su -u iobroker -s /bin/bash zu iobroker wechseln.

                                    I 1 Reply Last reply Reply Quote 0
                                    • I
                                      ianmoone @AlCalzone last edited by

                                      Hallo, ich versuche seit mehreren Tagen etwas ähnliches umzusetzen, leider ohne Erfolg.

                                      Auf einem raspberry4 läuft Iobroker 3.7.8 ich benutze einen weiteren raspberry3 mit rasbian buster um in chromium die Visualisierung anzuzeigen. Nun möchte ich den Monitor das raspberry3 nach xMinuten abschalten und über einen Bewegungsmelder wieder einschalten.
                                      Authentifizierung mittels Public-/Private-Key Verfahrens ist zwischen raspberry4 und raspberry3 eingerichtet.
                                      Wenn ich am raspberry4 mit meinem Benutzer angemeldet bin und über Terminal folgendes sende: ssh raspberry3@192.100.100.100 -t vcgencmd display_power 1
                                      Geht der Monitor aus. Soweit funktioniert es also.

                                      Wenn ich das ganze aus Iobroker (blockly) versuche, passiert nichts. Auch keine Fehlermeldung im Log.
                                      7bebe6db-1bec-4244-ab2d-ef8657553602-image.png

                                      Wenn ich mich auf dem raspberry4 mit dem Iobroker Benutzer anmelden und ssh raspberry3@192.100.100.100 -t vcgencmd display_power 1 ausführe muss ich ein Passwort eingeben. Könnte es hier eventuell auch sein das der Iobroker Benutzer nicht auf den Key zugreifen kann? Und wenn ja wie kann ich das ändern. Danke schon mal...

                                      AlCalzone 1 Reply Last reply Reply Quote 0
                                      • AlCalzone
                                        AlCalzone Developer @ianmoone last edited by AlCalzone

                                        @ianmoone sagte in [gelöst] Blockly - per ssh an anderen Rechner und script ausführen:

                                        Könnte es hier eventuell auch sein das der Iobroker Benutzer nicht auf den Key zugreifen kann?

                                        Ja, wurde doch oben schon diskutiert. Der Key muss im Kontext des Users ioBroker eingerichtet werden. Per Konsole kannst du das z.B. machen, wenn du dich als ioBroker "einloggst" (wie in meinem vorherigen Post beschrieben) und dann die Zertifikats-Geschichte einrichtest.

                                        1 Reply Last reply Reply Quote 0
                                        • I
                                          ianmoone last edited by

                                          Ok. Danke.
                                          Aktuell scheitere ich damit den erstellen Key auf den anderen raspberry zu übertragen.
                                          Wenn dies versuche: copy-id -i .ssh/id_rsa.pub username@ipadresse
                                          Soll ich das Passwort für den unser Iobroker eingeben. Habe ich aber nicht....

                                          AlCalzone 1 Reply Last reply Reply Quote 0
                                          • AlCalzone
                                            AlCalzone Developer @ianmoone last edited by

                                            @ianmoone Mir fehlen leider ein paar Informationen, um dir zu helfen.
                                            Führst du den Befehl als root oder iobroker aus?
                                            Ist username gleich "raspberry3", wie im obigen Screenshot?
                                            Hast du mal versucht, den Kopiervorgang als root auszuführen, aber dann als Pfad /home/iobroker/.ssh/id_rsa.pub zu nehmen?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            593
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            14
                                            42
                                            11744
                                            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