Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst] Befehl an Raspi

    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] Befehl an Raspi

    This topic has been deleted. Only users with topic management privileges can see it.
    • bahnuhr
      bahnuhr Forum Testing Most Active last edited by

      Hallo,

      Ausgangslage:

      iobroker läuft auf win Laptop

      zusätzlich

      Raspi (im Heimnetzwerk erreichbar)

      Ich möchte nun per Script in iobroker eine Datei auf dem Raspi aufrufen.

      Genauer; Auf dem Raspi soll eine …sh-Datei aufgerufen werden.

      Der Befehl auf dem Raspi heißt: "sudo /etc/.../abc.sh"

      Könnt ihr mir mal einen script-schnipsel geben wie das funktioniert.

      Danke im Voraus.

      mfg

      Dieter

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

        https://forum.ubuntuusers.de/topic/conn … l-per-ssh/

        .. das dürfte dir weiterhelfen. 😉

        Gruß

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

          Ne, das hilft mir nicht weiter.

          Das Raspi sh-Script hab ich doch schon.

          Ich brauche nun ein iobroker-Script das dieses Raspi-Script aufruft.

          Von iobroker aus.

          mfg

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

            Das sollte mit dem NPM-Modul https://www.npmjs.com/package/ssh2 funktionieren. Die Installation erfolgt, indem man das Modul ssh2 in der Konfiguration der Javascript-Instanz als zusätzliches NPM-Modul einträgt.

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

              @bahnuhr:

              Ne, das hilft mir nicht weiter.

              Das Raspi sh-Script hab ich doch schon. `

              Ja, nur um auf deinem anderen Rechner ein Befehl auszuführen, musst du diesen Befehl dorthin bringen.

              Im Falle eines Shell-Skripts ist die einfachste mir bekannte Lösung dich per SSH dorthin zu verbinden um den Skriptaufruf tätigen zu können.

              Die Variante von Paul basiert auch auf SSH, macht es für dich womöglich etwas anwenderfreundlicher - mit dem npm-Paket habe ich jedoch keine Erfahrung.

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

                @foxriver76:

                Im Falle eines Shell-Skripts ist die einfachste mir bekannte Lösung dich per SSH dorthin zu verbinden um den Skriptaufruf tätigen zu können. `

                Hallo, danke für den Input.

                Hast du rein zufällig noch ein Muster-Script wie das gehen könnte.

                Ich vermute, dass dies nicht so einfach ist.

                mfg

                Dieter

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

                  Das Skript könnte dann etwa so aussehen (getestet):

                  const idTrigger = '...'; // Datenpunkt-ID des Auslösers
                  const Client = require('ssh2').Client;
                  
                  function execabc() {
                    var conn = new Client();
                    conn.on('ready', function() {
                      conn.exec('sudo /etc/.../abc.sh', function(err, stream) {
                        if (err) throw err;
                        stream.on('close', function(code, signal) {
                          conn.end();
                        }).on('data', function(data) {
                          log('Ausgabe: ' + data);
                        }).stderr.on('data', function(data) {
                          log('Fehler: ' + data);
                        });
                      });
                    }).connect({
                      host: '192.168.100.100', // IP des RPi
                      port: 22,
                      username: 'pi',
                      password: 'deinpasswort'
                    });
                  }
                  
                  on(idTrigger, execabc); // Wertänderung von Trigger startet execabc()
                  
                  
                  1 Reply Last reply Reply Quote 0
                  • foxriver76
                    foxriver76 Developer last edited by

                    Also wie ich bereits sagte, wird Paul evtl eine nutzerfreundlichere Lösung in ioBroker haben.

                    Mein Ansatz wäre in deinem Skript etwas in Richtung:

                    Im JavaScript adapter:

                    exec('ssh user@server /absoluterPfadZumSkriptordner/skript.sh')
                    

                    Das müsste eine Verbindung zu deinem Rechner herstellen, das Skript ausführen und die Verbindung wieder beenden.

                    Allerdings müsstest du mal schauen, wie man die Authentifizierung handhabt, da du wahrscheinlich an deinem Pi noch ein Nutzerpasswort mitgeben musst. Ich habe in der Vergangenheit auch schon Packages für SSH-Anwendungen gehabt, wo man das Passwort hart mit in den Befehl schreiben kann (wie sinnvoll das ist, ist die andere Frage).

                    Für den Standard-SSH Befehl müsstest du mal hier schauen bezüglich authentifizieren: https://wiki.ubuntuusers.de/SSH/

                    Ah, ich sehe gerade dein Broker läuft auf Windows, dann muss ich dich ans NPM-Package verweisen. Sorry. 😄

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

                      Vielen lieben Dank, Paul

                      Das probier ich heute abend gleich aus.

                      mfg

                      Dieter

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

                        So, nochmals Danke an beide.

                        Was brauche ich noch:

                        Kann man das log in iobroker untersuchen?

                        Genauer:

                        Wenn ein bestimmer Adapter einen Fehler ist log schreibt, dann möchte ich darauf reagieren.

                        Habt ihr auch sowas?

                        Oder mal einen Link für mich.

                        mfg

                        Dieter

                        P.S.

                        Wenn ich dies zusammen habe probier ich dann mal ein Script zu unterstellen, das folgendes machen soll:

                        • wenn von Adapter x Fehler im log, dann führe Befehl auf Raspi aus und starte danach den Adapter x neu
                        1 Reply Last reply Reply Quote 0
                        • foxriver76
                          foxriver76 Developer last edited by

                          @bahnuhr:

                          Kann man das log in iobroker untersuchen? `
                          Weiß leider nicht obs da schon was in ioBroker gibt. Notfalls liegt die Log-Datei in iobroker/log/ (wird in Windows hoffentlich auch so sein).

                          Lässt sich mit Sicherheit einlesen mittels JS. 😉

                          Unter Linux könnte man es mit

                          var logfile = exec('cat absPath/logfile.log');
                          

                          in eine Variable schreiben

                          Windows äquivalent zu cat scheint der Befehl````
                          type

                          
                          Evtl. mal hier schauen: [https://www.forum.iobroker.net/viewtopic.php?t=4138](https://www.forum.iobroker.net/viewtopic.php?t=4138)
                          1 Reply Last reply Reply Quote 0
                          • bahnuhr
                            bahnuhr Forum Testing Most Active last edited by

                            Rückinfo zu pauls script:

                            Paul, das script läuft einwandfrei.

                            Vielen Dank für den Input.

                            mfg

                            Dieter

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

                              @bahnuhr:

                              das script läuft einwandfrei. `
                              Dann ersetze bitte im Betreff des ersten Beitrags [Frage] durch [gelöst].

                              1 Reply Last reply Reply Quote 0
                              • U
                                uwe72 last edited by

                                Bekomme folgenden Fehler:
                                20:48:13.373 error javascript.0 (1414) script.js.common.Sensoren.Taster.TasterYolo: Error: Cannot find module '/opt/iobroker/node_modules/iobroker.javascript/lib/../../ssh2'

                                Betrifft die erste Zeile des beispielcodes:
                                const Client = require('ssh2').Client;

                                Was muss ich hier tun? Kann mir jemand helfen?

                                U 1 Reply Last reply Reply Quote 0
                                • U
                                  uwe72 @uwe72 last edited by

                                  @uwe72 ok habe es selber gefunden, man muss "ssh2" noch eintragen, siehe Screenshot:
                                  6a4fba3b-d013-4549-ad92-94685ed81139-image.png

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

                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  490
                                  Online

                                  31.8k
                                  Users

                                  80.0k
                                  Topics

                                  1.3m
                                  Posts

                                  5
                                  15
                                  2854
                                  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