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. Pythonscript eines entfernten Raspberrys aufrufen …

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    999

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

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

Pythonscript eines entfernten Raspberrys aufrufen …

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
22 Beiträge 4 Kommentatoren 2.4k Aufrufe
  • Ä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.
  • F Offline
    F Offline
    flyer99
    schrieb am zuletzt editiert von
    #1

    Hallo Leute,

    Erstmal Hut ab vor dem ganzen Forum und ein großes Dankeschön an alle. Hab mir ioBroker vor ca. 6 Wochen auf meinem Raspberry mit Touchdisplay installiert und hab eigentlich alles zum laufen bekommen (Viessmann Vitola Brenner per Raspberry auslesen, MiVakuum Sauger, FritzDect Thermostate usw.). Dauerte alles ein wenig aber es funktioniert 1a.

    Was mir nun fehlt, besser gesagt wo ich mir die Zähne ausbeise ist der Aufruf eines PythonScripts auf einem Raspberry welcher die Steuerung unseres Schildigeheges übernimmt. Der Aufruf des PythonScripts schaltet eine LED ein (in der Höhle der Schildis um abends zu sehen ob alle 4-Beiner auch daheim sind …). Dies klappt per Aufruf von der Konsole auf welchem auch der ioBroker läuft wunderbar:````
    ssh root@raspberryschildis.fritz.box python /var/www/python/17ein.py

    
    Die Authentifizierung über Public-Keys wurde eingerichtet, deswegen funktioniert es auch über die Konsole des Raspberry's auf welchem der ioBroker läuft ohne Kennworteingabe (was vorher nicht der Fall war) !!
    
    Wenn ich nun in ioBroker ein Script erstelle (egal ob JavaScript oder Blockly) welches diesen Befehl per
    
    JavaScript:
    

    exec ('ssh root@raspberryschildis.fritz.box python /var/www/python/17ein.py', function (error, stdout, stderr) {
    console.log('stdout: ' + stdout);
    });

    
    Blockly:
    

    exec('ssh root@raspberryschildis.fritz.box sudo python /var/www/python/17ein.py');
    console.log("exec: " + 'ssh root@raspberryschildis.fritz.box sudo python /var/www/python/17ein.py');

    
    ausführen soll passiert nichts wenn ich das Script starte ????
    
    Habe auch versucht ein BashScript zu starten, dies funktioniert ebenfalls nicht, von der Konsole aus schon. Es kann also nicht an Python liegen meiner Meinung nach.
    
    Ich habe jetzt gefühlt 150 Foreneinträge durchgelesen und komme trotzdem nicht ans Ziel.
    
    Deswegen nun auch mein Foreneintrag/Frage :?: :roll:
    
    Für eine Hilfestellung oder Tip wäre ich echt dankbar ….

    Raspberry 4, Bullseye, mit dem Raspi 7" Touchdisplay was ioBroker betrifft ...

    1 Antwort Letzte Antwort
    0
    • Jey CeeJ Online
      Jey CeeJ Online
      Jey Cee
      Developer
      schrieb am zuletzt editiert von
      #2

      Dein Problem besteht wahrscheinlich darin das du den Public-Key für ssh für den Benutzer pi eingetragen hast.

      ioBroker läuft aber unter einem anderen Benutzer (iobroker), deshalb wird auch jeder Befehl der per exec ausgeführt wird unter diesem Benutzer ausgeführt.

      Du musst also den Key auch für den Benutzer iobroker eintragen.

      Persönlicher Support
      Spenden -> paypal.me/J3YC33

      1 Antwort Letzte Antwort
      0
      • F Offline
        F Offline
        flyer99
        schrieb am zuletzt editiert von
        #3

        Danke für deine schnelle Antwort Jey Cee,

        Heist das ich muss mich am Raspberry auf welchem ioBroker läuft per ioBroker anmelden und dann den SChlüssel erzeugen ? Wie melde ich mich den mit ioBroker an ? –> su iobroker --> Passwort ???

        Raspberry 4, Bullseye, mit dem Raspi 7" Touchdisplay was ioBroker betrifft ...

        1 Antwort Letzte Antwort
        0
        • F Offline
          F Offline
          flyer99
          schrieb am zuletzt editiert von
          #4

          Also das Passwort kann ich mit````
          iobroker passwd admin

          
          Ein Login mit su iobroker –> Passwort funktioniert allerdings nicht :?: :?:
          
          "su: Fehler bei der Authentifizierung"
          
          Steh irgendwie aufm Schlauch ...

          Raspberry 4, Bullseye, mit dem Raspi 7" Touchdisplay was ioBroker betrifft ...

          1 Antwort Letzte Antwort
          0
          • Jey CeeJ Online
            Jey CeeJ Online
            Jey Cee
            Developer
            schrieb am zuletzt editiert von
            #5

            Oh ich weiss nicht ob das Passwort zu ändern eine gute Idee war, wird sich zeigen.

            Ich habe selbst erst einmal einen SSH key erstellt, aber soweit ich das verstanden habe liegt der als Datei im home Verzeichnis des Benutzers.

            Das heißt es sollte ausreichen wenn du die Datei in das Home Verzeichnis von dem Benutzer iobroker verschiebst.

            Gesendet von meinem HTC U11 mit Tapatalk

            Persönlicher Support
            Spenden -> paypal.me/J3YC33

            1 Antwort Letzte Antwort
            0
            • F Offline
              F Offline
              flyer99
              schrieb am zuletzt editiert von
              #6

              Das funktioniert leider auch nicht…

              Was ich bis jetzt gemacht habe:

              1. Mit````
              ssh-keygen -t rsa -b 4096

              
              2\. Mit````
              ssh-copy-id -i ~/.ssh/id_rsa.pub root@raspberryschildis.fritz.box
              ````den Schlüssel xxx.pub auf den Raspberry kopiert auf welchem das Pythonscript ausgeführt werden soll.
              
              3\. Auf der Konsole des Raspberry auf welchem der ioBroker läuft kann ich nun mit````
              ssh root@raspberryschildis.fritz.box python /var/www/python/17ein.py
              ````die LED einschalten.
              
              4\. Den Schlüssel habe ich nun in den Ordner  ` > /home/iobroker `  und in den Ordner  ` > /home/iobroker/.ssh `  kopiert.
              
              Trotzdem lässt sich die LED nicht einschalten mit dem Script````
              exec ('ssh root@raspberryschildis.fritz.box python /var/www/python/17ein.py', function (error, stdout, stderr) {
                             console.log('stdout: ' + stdout);
                       });
              

              Bin ein wenig ratlos :roll: :roll: .

              Logisch wäre für mich eigentlich das ich mich mit dem Benutzer "iobroker" anmelde und dann den Schlüssel erzeuge, jedoch habe ich kein Passwort für den Benutzer "iobroker", selbst wenn ich es ändere kann ich mich anschließend nicht mit dem geänderten Passwort anmelden ?..

              Durch die Änderung des Passwortes vom Benutzer "iobroker" habe ich bis jetzt keine Beeinträchtigung, es läuft noch alles …

              Raspberry 4, Bullseye, mit dem Raspi 7" Touchdisplay was ioBroker betrifft ...

              1 Antwort Letzte Antwort
              0
              • ? Offline
                ? Offline
                Ein ehemaliger Benutzer
                schrieb am zuletzt editiert von
                #7

                Hallo Zusammen,

                wenn Du dich vom IoBroker Rechner auf den Raspi im Krötenhaus mittels SSH verbindest, muss Du da ein Passwort eingeben für den SSH Schlüssel oder den Verbindungsaufbau?

                Bei ssh-keygen wird normalerweise gefragt, ob der private Schlüssel mit einem Password geschützt werden soll.

                Wenn Ja…..das Problem bei Linux ist, das Passwörter und andere Sicherheitsabfragen nicht ohne erheblichen Aufwand in Form eines Scripts an linuxeigene Sicherheitsabfragen übergeben werden können, dazu braucht es dann einen Umweg über zusätzliche Linuxwerkzeuge wie STTY und Expect.

                Edit weil hinzugefügt: Installiere Dir mal auf dem IoBroker Rechner den Terminal Adapter und verbinde Dich dann mittels einem Browser zu einer Terminalsitzung, diese wird dann im Kontext vom user IoBroker gestartet, dann führe Deine Befehle mal manuell auf dieser Konsole aus, und sag mir ob der Verbindungsauf und die Sciptausführung auf dem Krötenrechner funktioniert hat.

                Weitere Frage, ist im Script Adapter "Erlaube das Kommando "exec"" eingeschaltet?

                Weiter hinzugefügt: Bitte erweitere Deine Fehlerausgabe um "console.log('stderr: ' + stderr);" damit ich sehen kann innerhalb vom IoBroker Log auf welchen Fehler Dein Script u.U läuft.

                exec ('ssh root@raspberryschildis.fritz.box python /var/www/python/17ein.py', 
                function (error, stdout, stderr) {
                               console.log('stdout: ' + stdout);
                               console.log('stderr: ' + stderr);
                         });
                

                Herzliche Grüße

                Equilora aka Harald

                1 Antwort Letzte Antwort
                0
                • Jey CeeJ Online
                  Jey CeeJ Online
                  Jey Cee
                  Developer
                  schrieb am zuletzt editiert von
                  #8

                  Und falls die Vorschläge von Equilora dich auch nicht weiter bringen gibt es noch die Möglichkeit direkt eine ssh Verbindung auf zu bauen.

                  Dazu gibt es ein modul das du in der JS Adapter config eintragen kannst: https://www.npmjs.com/package/node-ssh

                  Persönlicher Support
                  Spenden -> paypal.me/J3YC33

                  1 Antwort Letzte Antwort
                  0
                  • F Offline
                    F Offline
                    flyer99
                    schrieb am zuletzt editiert von
                    #9

                    Danke für deine Antwort. Bin grad noch auf Spätschicht und kann erst nachher testen..

                    Was ich allerdings sagen kann ist das ich KEIN Passwort eingeben muss. Der Befehl funktioniert aus der Konsole ohne Probleme.

                    Das Kommando exec ist eingeschaltet.

                    Das mit dem TerminalAdapter teste ich nachher….

                    Gesendet von meinem G8441 mit Tapatalk

                    Raspberry 4, Bullseye, mit dem Raspi 7" Touchdisplay was ioBroker betrifft ...

                    1 Antwort Letzte Antwort
                    0
                    • F Offline
                      F Offline
                      flyer99
                      schrieb am zuletzt editiert von
                      #10

                      @jey cee, grad gelesen. Danke für die Info, werde ich testen…

                      Gesendet von meinem G8441 mit Tapatalk

                      Raspberry 4, Bullseye, mit dem Raspi 7" Touchdisplay was ioBroker betrifft ...

                      1 Antwort Letzte Antwort
                      0
                      • ? Offline
                        ? Offline
                        Ein ehemaliger Benutzer
                        schrieb am zuletzt editiert von
                        #11

                        Servus Flyer,

                        @flyer99:

                        Danke für deine Antwort. Bin grad noch auf Spätschicht und kann erst nachher testen..

                        Was ich allerdings sagen kann ist das ich KEIN Passwort eingeben muss. Der Befehl funktioniert aus der Konsole ohne Probleme.

                        Das Kommando exec ist eingeschaltet.

                        Das mit dem TerminalAdapter teste ich nachher….

                        Gesendet von meinem G8441 mit Tapatalk `

                        Wenn es auf der Console klappt, dann erweitere erstmal die Fehlerausgabe in Deinem Script und test dies bitte zuerst.

                        Das mit dem Terminaladapter ist nur eine Krücke, lass uns versuchen rauszufinden was zur Laufzeit vom Script passiert.

                        Herzliche Grüße und viel Erfolg

                        Equilora aka Harald

                        1 Antwort Letzte Antwort
                        0
                        • F Offline
                          F Offline
                          flyer99
                          schrieb am zuletzt editiert von
                          #12

                          Abend equilora,

                          Hier die Ausgabe des Logs.

                          Es gibt wohl tatsächlich noch ein Problem mit der Authentifizierung. Wenn ich die letzte Fehlermeldung google stoße ich relativ oft auf die known_hosts Datei welche evtl. alte Einträge beinhaltet. Ich mach die mal platt ….

                          23:32:49.224	info	javascript.0 Stop script script.js.Test.LED_ein
                          23:33:05.141	info	javascript.0 Stop script script.js.Test.LED_ein
                          23:33:37.339	info	javascript.0 Start javascript script.js.Test.LED_ein
                          23:33:37.341	info	javascript.0 script.js.Test.LED_ein: registered 0 subscriptions and 0 schedules
                          23:33:38.183	info	javascript.0 script.js.Test.LED_ein: stdout:
                          23:33:38.184	info	javascript.0 script.js.Test.LED_ein: stderr: Host key verification failed.
                          

                          Raspberry 4, Bullseye, mit dem Raspi 7" Touchdisplay was ioBroker betrifft ...

                          1 Antwort Letzte Antwort
                          0
                          • ? Offline
                            ? Offline
                            Ein ehemaliger Benutzer
                            schrieb am zuletzt editiert von
                            #13

                            Servus Flyer,

                            Danke für das Erweitern der Fehlerbehandlung…. zumindest keine DNS oder Passwort Probleme....

                            Hinweis an Alle Script Junkies… "console.log('stderr: ' + stderr);" im Script hilft Probleme schneller zu finden.... :mrgreen:

                            Du hast geschrieben das Du dich via dem root Konto vom IoBroker Host mit dem SSH befehl samt Scriptaufruf auf auf den Schildkröten Host verbinden kannst…Ja?

                            Aber im Kontext vom ioBroker Konto geht das wohl nicht - korrekt?

                            Das guckt nach der "requetterie" Sch.... in UX aus.... oder es fehlt wie schon oben beschrieben der Zugriff auf den Schlüssel im IoBroker User Context... auf dem Remote Host, weil der Kontextwechsel fehlschlägt.

                            Nevertheless.... platt machen der "known hosts" ist nach einem Backup OK - dann aber bitte ssh-keygen -R hostname versuchen...

                            Herzliche Grüße und viel Erfolg

                            Equilora aka Harald

                            1 Antwort Letzte Antwort
                            0
                            • F Offline
                              F Offline
                              flyer99
                              schrieb am zuletzt editiert von
                              #14

                              Harald,

                              > Das guckt nach der "requetterie" Sch…. in UX aus.... oder es fehlt wie schon oben beschrieben der Zugriff auf den Schlüssel im IoBroker User Context... auf dem Remote Host, weil der Kontextwechsel fehlschlägt.

                              Ich verstehe nicht wirklich was du meinst :lol: :roll:

                              Habe nun auf dem Raspberry-iobroker und auf dem Raspberry-Schildkröten den Ordner .ssh in Verzeichnissen /root/ und /home/pi/ jeweils komplett gelöscht und erneut einen Schlüssel erzeugt. Wieder ohne Erfolg. über die Konsole geht es, über ioBroker nicht :evil:

                              AN über Konsole …

                              ~~![](</s><URL url=)https://up.picr.de/34849097se.png" />

                              AUS über Konsole …

                              ~~![](</s><URL url=)https://up.picr.de/34849099dd.png" />

                              Beides ohne Passworteingabe …~~~~

                              Raspberry 4, Bullseye, mit dem Raspi 7" Touchdisplay was ioBroker betrifft ...

                              1 Antwort Letzte Antwort
                              0
                              • F Offline
                                F Offline
                                flyer99
                                schrieb am zuletzt editiert von
                                #15

                                Müssen meine Dateirechte des Pythonprogramms anderst aussehen ??

                                ~~![](</s><URL url=)https://up.picr.de/34849103zr.png" />

                                Das bringt mich bald zur Weißglut … Nen alten Viessmann Vitola Brenner per Raspberry und Platine über IR_Dioden auszulesen krieg ich hin, das dann 1,5 Jahre später in ioBroker einzubinden auch noch. Ne Schildisteuerung mit eigenem Platinenlayout und vollständiger Bedienung über HTML auch, aber ne verf..... LED einzuschalten von einem anderen Raspberry klappt nicht (zumindest über den ioBroker ...). Mann o Mann :evil:

                                Geduld hab ich eigentlich, aber nach 21 Stunden effektivem Probieren bin ich leicht angekackt ....

                                Soll ich mal noch das mit dem Terminal Adapter ausprobieren was du mal erwähnt hast ?~~

                                Raspberry 4, Bullseye, mit dem Raspi 7" Touchdisplay was ioBroker betrifft ...

                                1 Antwort Letzte Antwort
                                0
                                • F Offline
                                  F Offline
                                  flyer99
                                  schrieb am zuletzt editiert von
                                  #16

                                  Oder bin ich zu blöd das Script zu starten ??

                                  Ich drücke auf den roten Pfeil des entsprechenden Script's ?….

                                  ~~![](</s><URL url=)https://up.picr.de/34849119wf.png" />

                                  Hab noch nicht aufgegeben, freue mich auf jedwelche Info ….~~

                                  Raspberry 4, Bullseye, mit dem Raspi 7" Touchdisplay was ioBroker betrifft ...

                                  1 Antwort Letzte Antwort
                                  0
                                  • ? Offline
                                    ? Offline
                                    Ein ehemaliger Benutzer
                                    schrieb am zuletzt editiert von
                                    #17

                                    Nope Du bist entweder im Kontext vom Anwender PI oder oder Root….. das geht so nicht.... :mrgreen:

                                    PM gesendet...

                                    1 Antwort Letzte Antwort
                                    0
                                    • F Offline
                                      F Offline
                                      flyer99
                                      schrieb am zuletzt editiert von
                                      #18

                                      Kann Benutzer root nicht mehr als Benutzer Pi ? Die Rechtehandhabung unter Linux is jetzt nicht so meine Spezialität, geb ich zu …

                                      Aber ich kann doch nicht der erste sein der das schalten eines GPIO's (indirekt durch ein PythonProgramm) auf einem entferntem Raspberry im eigenen Heimnetz bewerkstelligen will ??..

                                      Raspberry 4, Bullseye, mit dem Raspi 7" Touchdisplay was ioBroker betrifft ...

                                      1 Antwort Letzte Antwort
                                      0
                                      • ? Offline
                                        ? Offline
                                        Ein ehemaliger Benutzer
                                        schrieb am zuletzt editiert von
                                        #19

                                        Na ja.. seit Eward Sonwden sieht die Welt egal on UX oder Win etwas anders aus…der hat mit schlampigen SSH Keys mal schnell was gemacht.......

                                        1 Antwort Letzte Antwort
                                        0
                                        • andreaskosA Offline
                                          andreaskosA Offline
                                          andreaskos
                                          schrieb am zuletzt editiert von
                                          #20

                                          Hi Flyer99!

                                          Also die exec-Funktion führt zum Ausführen des übergebenen Kommandos mit dem Benutzer "root". Das kann man auch leicht ausprobieren, indem man das Kommando "whoami" ausführt und sich die Antwort anzeigen lässt. Siehe dazu das folgende Script:

                                          ! // Script zum Anzeigen des Benutzernamens mit dem Shell-Command "whoami" ! var command = "whoami"; var answer = "Antwort von whoami:"; ! exec(command , function (error, stdout, stderr) { setTimeout(function() { if (stdout.length < 1) { //log( "KEINE DATEN!", 'error'); answer += "Fehlgeschlagen!"; console.log(answer); } else { //log( "Rückgabe:\n" + stdout); answer += stdout; console.log(answer); } }, 1000); }); !

                                          Um jetzt Befehle über ssh auf einem anderen Rechner ausführen zu können gibt es zwei Wege:

                                          1.) Verwendung des Moduls node-ssh wie von Jey Cee angegeben. Ohne Keys muss du dann allerdings dein Passwort im Klartext in das JS-Script hineinschreiben.

                                          2.) ssh-Befehl über exec aufrufen. Das geht nur mit Key-Files, da ja keine interaktive Passworteingabe möglich ist.

                                          Erstellung von Keys mit ssh-keygen und Übertragung des Keys mit ssh-copy-id auf den Ziel-Rechner. Die Keys musst du natürlich mit dem Benutzer root anlegen und übertragen. Am Ziel-Rechner kann es natürlich auch ein anderer Benutzer sein, der den Befehl dann lokal ausführt.

                                          Falls du nicht als root ssh-Verbindungen machen möchtest, dann kannst du noch über den su-Befehl den ssh-Aufruf machen, also mit:

                                          su localuser -c "ssh remoteuser@remoterechner 'Kommando'  "
                                          

                                          Da der su-Befehl über die exec-Funktion und damit als root aufgerufen wird, ist kein Passwort für das user-switchen notwendig.

                                          Ach ja, im eigenen Heimnetz würde auch die Option StrictHostKeyChecking=no im ssh-Aufruf vertretbar sein, damit kann man sich auch lästige Verbindungsprobleme sparen. Also so:

                                          ssh -o StrictHostKeyChecking=no remoteruser@remoterechner
                                          

                                          LG

                                          Andreas

                                          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

                                          570

                                          Online

                                          32.5k

                                          Benutzer

                                          81.6k

                                          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