Script via SSH auf RaspberryPi fern-ausführen

Hidden Evil

Moderator
Teammitglied
Hallo Ihr lieben,

Ich stehe gerade vor einem Experiment und könnte alles umsetzen, nur an der Fernausführung scheitert es (noch).

Aufgabe: Ich möchte eine per LAN steuerbare Infrarot-Fernbedienung konstruieren.

Dafür habe ich bereits:

- einen RaspberryPi zur Hand und werde mir in Kürze auch alle Komponenten zum Empfangen (für's Speichern der Befehle) und Senden von Signalen besorgen. Die Software ("lirc") ist auch schon griffbereit
- Das LAN, am Platzierungsort des Pi ist auch ein LAN-Anschluss vorhanden. Infrastruktur liegt also vor.
- Am PC steht mir ein Elgato Stream Deck zur Verfügung, mit dem ich via 3 Buttons 3 verschiedene Exe-Dateien ausführen möchte um das Ziel-Gerät zu steuern

Im Prinzip habe ich alle Anleitungen vorhanden um die Signale der Originalfernbedienung zu speichern, auszuwerten und wieder zu senden, die mittels Script ausgeführen zu lassen.
Es scheitert nur daran, das Script via LAN auszuführen.

Dafür gäbe es 2 Möglichkeiten:

1) Ich habe bereits via Apache-Server und PHP-Script eine GPIO-Steuerung erfolgreich genutzt, ein Script wäre sicher auch möglich.
ABER: Beim Aufrufen mittels Streamdeck würde dann immer per Tastendruck ein neues Browser-Fenster geöffnet und nicht wieder geschlossen werden, und das würde zichhundert offene Fenster beim häufigen Schalten zur Folge haben => doof

2) Ergo muss es per SSH erfolgen, und hier mangelt es mir an Wissen und an Anleitungen im Netz.
Ich will nämlich per Exe (die auch gleich wieder schließt nach Nutzung) oder per Verknüpfung das Script per SSH übers LAN auf dem Pi ausführen.

Putti ist mir bekannt und vorhanden, aber kann ich einfach so einen einzigen Befehl in eine Putti-Verknüpfung stecken, einmalig ausführen lassen und das schließt sich automatisch?
Theoretisch ginge das auch über batch, aber der ssh-Befehl beinhaltet keinen Passwort-Parameter, soweit ich richtig gelesen habe. Wie melde ich mich am Pi also ohne Passwort an?

Es scheitert im Prinzip also nur an der Art des SSH-Befehls, hier stehe ich auf dem Schlauch.

Zur Info: Das Betriebssystem des Pi ist Rasbian, wie man am Namen erkennen kann, auf Debian basierend. Falls ich da irgendwo eine andersartige SSH-Authentifizierung einstellen kann, damit Batch auch ohne Passwort SSH-Befehle auf den Pi senden kann, wäre das natürlich auch eine brauchbare Lösung.

Hat da jemand vielleicht einen Tipp für mich?
Lieben Dank :)
 
Zuletzt bearbeitet:
Eine Lösung mit SSH (oder mit einem Putty-Script; falls es sowas überhaupt gibt) stell ich mir sehr schwierig bis unmöglich vor.
Grund: Secure Shell Verbindungen sind verschlüsselt; das Anmelden am System und ausführen von Programmen soll eben nicht
automatisierbar sein. Aus naheliegenden Gründen...

Kannst du mit deinem StreamDeck nicht auch einen curl Befehl abfeuern? Die genaue Syntax ist mir jetzt nicht geläufig, aber du
kannst HTTP-GET Requests damit erzeugen.

Auf dem Raspi machst du mit Python dann einen angepassten Webserver.
 
Ok, inzwischen bin ich soweit, dass ich Befehle ausführen kann. Falls jemand ein ähnliches Vorhaben hat, hier mal mein Lösungsansatz (ist noch lange nicht Praxistauglich!):

Wenn man Putti installiert hat, bringt es das Tool "plink" mit. Damit mann man via Shortcut oder batch einen Befehl via ssh senden. Das ganze sieht bei mir so dann aus, um z.B. den RaspberryPi zu rebooten.
Code:
plink -ssh pi@192.168.0.135 -pw Passwortsagichnicht sudo reboot

Jetzt muss ich später nur noch die Befehle des Fernbedienungstools "lirc" damit aufrufen, aber das funktioniert erst sobald ich die elektronischen Bauelemente habe, um die Infrarot-Signale aufzufangen und zu senden.

//Edit:

@duffguy:

Danke für die Antwort, aber wir haben uns leider überschnitten. Naja, bisher läuft der Ansatz doch so simpel wie ich erhofft habe. Von curl habe ich noch nie gehört, aber das Streamdeck kann halt Exe-Dateien und Verknüpfungen (auch mit Parameter) ausführen, ebenso http-Links. Auf letztere wollte ich aber verzichten, weil die Browserfenster offen bleiben. Das ist auf Dauer extrem lästig.

//Nachtrag 2:
Ich kann sogar .sh-Scripte nun ausführen, ähnlich wie oben:
Code:
plink -ssh pi@192.168.0.135 -pw Passwortsagichnicht bash test.sh

Wenn ich die entsprechenden Befehle nun in die Test-Datei einfüge (im Beispiel noch mit dem Reboot-Befehl) dürfte es klappen. chmod ist auch auf 777 gesetzt, damit es ausführbar ist.
Ich komme also doch voran. :)
 
Zuletzt bearbeitet:
Man kann einen Schlüssel erstellen um per ssh auf ein anderes System zu zugreifen: https://klenzel.de/1871

Ist zwar jetzt in diesem Fall für openhab mit mehreren Raspberry gedacht, sollte aber auch gehen bei Dir.

Lese Dir mal auf der Seite einige Beispiele durch, da gibt es auch Scripte die Du eventuell anpassen kannst.
 
Curl ist ein Kommandozeilen-Tool zum absetzen von HTTP-Requests. In Windows 10 soll es sogar eingebaut sein.

Aber mit plink remote einen Shell-Script starten dürfte weitaus weniger aufwändig sein. Interessantes Projekt;
schreib doch hier wieder, wenn es läuft.
 
So, in Kürze eine gute Info: Es geht! Wie genau kann ich gern noch später erklären, wenn der Wunsch besteht.

Ich kann nun via Verknüpfungen auf PC bzw. über das Stream Deck von Elgato einen Infrarot-Empfänger steuern. Die Fernbedienung anzulernen (und hier waren es nur 3 Tasten!) und einige Linux-Befehle waren zwar eine Sisyphus-Arbeit, aber es klappt.
(Jetzt muss ist das blöde Steckbrett nur noch sauber auf eine Platine gelötet bekommen, hoffentlich vertausche ich beim Transistor nicht wieder 2 Pins und ärgere mich über 20 Minuten verbratene Zeit :rolleyes:)

Nächstes Projekt wird eine Universal-Fernbedienung für TV, Beamer und Surround-Anlage mittels Touchpad für den Pi. :D

Danke nochmals für Eure Tipps :)
 
Hallo Hidden Evil

Genau das selbe will ich auch realisieren. Nur habe ich ein richtiges Brett vorm Kopf. Kannst du mir eventuell helfen resp. erläutern wie du das gemacht hast?

Besten Dank :)
 
Oben