Darauf wird es hinauslaufen...
Notwendige Schritte:
- Auf dem Rechner mit HABPanel brauchst Du einen User, der den Befehl nutzen darf.
- auf openHAB-Seite musst Du ein bash-Script erstellen, welches den Befehl sendet
- Das bash-Script muss ausführbar sein und der User openhab muss berechtigt sein, das Script auszuführen
- Das Script muss per exec Binding aufgerufen werden
- Der exakte Befehl zum Aufruf des Scripts muss in der Whitelist eingetragen werden
Man kann das script "dumm" so gestalten:
Script unter dem Namen wakePanel.sh im Verzeichnis /usr/local/bin/ speichern:
Code: Alles auswählen
#!/usr/bin/bash
sshpass meinSupergeheimesPasswort ssh habpaneluser@habpanel-rechner -c xset dpms force on
Das Script ausführbar machen:
und dann passend ein exec Thing anlegen sowie den notwendigen Aufruf in der whitelist eintragen.
Allerdings steht somit meinSupergeheimesPasswort im Klartext in der Datei, und schlimmer noch, es ist auch möglich, diverse andere BEfehle auszuführen, wenn man erst mal das Passwort hat.
Die "bessere" Option des Login ist, asymetrische Schlüssel zu verwenden. Man erzeugt per ssh-keygen ein Schlüsselpaar für den User auf dem HABPanel Rechner, anschließend fügt man den erzeugten Public Key in die Liste der erlaubten Schlüssel (Inhalt der Datei auf dem HABPanel Rechner Im Userverzeichnis unterhalb ~/.ssh/ in die Datei authorized_keys einfügen)
Nun kann man den Private Key im home-Verzeichnis des Users openhab (auf dem openHAB System) in einen Ordner ~/.ssh/ ablegen. Da das Verzeichnis gewöhnlich nicht existiert, müssen wir es anlegen. Das Verzeichnis darf nur für den User openHAB verwendbar sein, das bedeutet, die Rechte müssen auf 700 gesetzt werden.
Nun reicht es im Script, einen Verweis auf den private Key anzugeben:
Code: Alles auswählen
#!/usr/bin/bash
ssh habpaneluser@habpanel-rechner -i id_rsa -c xset dpms force on
und wir fühlen uns gleich eine ganze Ecke sicherer. Zugriff ist nun nur möglich, wenn jemand in Besitz des Private Keys ist.
Die "saubere" Lösung ist eine Ecke aufwändiger, ein exaktes HowTo müsste ich auch erst mal wieder zusammensuchen, sie sieht aber so aus, dass man auf dem Zielsystem (eben dem HABPanel Rechner) einen eigenen User anlegt. Dieser User darf überhaupt nichts, außer, über ssh ganz bestimmte (exakt festgelegte) Befehle auszuführen.
Man kann dann über die authorized keys definieren, dass beim Login automatisch ein Script gestartet wird, welches den übergebenen Befehl entgegen nimmt. Ist der Befehl in dem Script definiert, wird der verknüpfte Befehl ausgeführt. Ansonsten gibt es halt einen Logeintrag über einen Loginversuch mit verbotenem Kommando.
Ich habe das schon mal realisiert, und zwar im Zusammenhang mit dem automatischen Backup einer Datenbank, letztlich ist es gar nicht soooo kompliziert, aber hier vielleicht doch overkill.
Die Schlüssel sind aber definitiv dem Schummelbefehl sshpass vorzuziehen

auch wenn sshpass sehr verlockend ist. Es gibt schon Gründe, warum ssh selbst keine Option vorsieht, das Passwort über ein Script zu übergeben.