Monitor an anderem Rechner(Linux) aufwecken

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

ollis112
Beiträge: 109
Registriert: 18. Aug 2018 11:36
Answers: 0
Wohnort: Alsbach-Hähnlein

Monitor an anderem Rechner(Linux) aufwecken

Beitrag von ollis112 »

Hallo,
folgendes Setup habe ich:
OH3 läuft auf einem Ubuntu System.
Habpanel läuft auf einem anderen Linux Rechner über Internet-.Browser.

Jetzt möchte ich, das bei einem bestimmten Ereignis der Monitor am Habpanel aufwacht.
per ssh geht das mit dem Befehl: xset dpms force on
Kann ich nun diesen Befehl über Openhab an den anderen Rechner senden lassen, damit der Monitor aufwacht?

Habe schon viel gesucht aber nicht wirklich etwas gefunden, oder nicht verstanden.... :roll:

Würde mich sehr über Hilfe freuen.

Gruß
Oliver
Openhab3.3.0, openhabian auf Ubuntu, Gigabyte Brix, Z-Wave, Zigbee, Enocean

mad-mike
Beiträge: 491
Registriert: 6. Jan 2021 18:05
Answers: 3

Re: Monitor an anderem Rechner(Linux) aufwecken

Beitrag von mad-mike »

Moin.
Ich als Laie würde es mit dem EXEC Binding versuchen.
Gruss mad-mike

openHABian 4.3.5 auf Raspberry Pi 4 Mod. b (8GB) ;)

Benutzeravatar
udo1toni
Beiträge: 15247
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Monitor an anderem Rechner(Linux) aufwecken

Beitrag von udo1toni »

Darauf wird es hinauslaufen...
Notwendige Schritte:
  1. Auf dem Rechner mit HABPanel brauchst Du einen User, der den Befehl nutzen darf.
  2. auf openHAB-Seite musst Du ein bash-Script erstellen, welches den Befehl sendet
  3. Das bash-Script muss ausführbar sein und der User openhab muss berechtigt sein, das Script auszuführen
  4. Das Script muss per exec Binding aufgerufen werden
  5. 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:

Code: Alles auswählen

sudo chmod 755 /usr/local/bin/wakePanel.sh
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.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

ollis112
Beiträge: 109
Registriert: 18. Aug 2018 11:36
Answers: 0
Wohnort: Alsbach-Hähnlein

Re: Monitor an anderem Rechner(Linux) aufwecken

Beitrag von ollis112 »

Hallo Udo,

sehr ausführlich wie immer von Dir. Vielen Dank.
Dann werde ich mich mal dran machen.
Kann allerdings etwas dauern.
Ich werde berichten.
Openhab3.3.0, openhabian auf Ubuntu, Gigabyte Brix, Z-Wave, Zigbee, Enocean

ollis112
Beiträge: 109
Registriert: 18. Aug 2018 11:36
Answers: 0
Wohnort: Alsbach-Hähnlein

Re: Monitor an anderem Rechner(Linux) aufwecken

Beitrag von ollis112 »

So,
habe jetzt viel getestet, aber habe es nicht geschaft.
Bin aber soweit, dass ich auf dem Rechner worauf Openhab läuft,
nur auf der Konsole den Befehl" panelon.sh" eingeben muss, und schon geht der Monitor am Habpanelrechner an.
Wie schaffe ich es jetzt, das mit der Exec-Bindung zu steuern?
Genügt der Befehl, oder was muss ich noch beachten?
Habe im Thing den Befehl so eingegeben und in die Whitelist eingetragen.
Aber beim ansteuern des INPUT-Item passiert nichts??
Openhab3.3.0, openhabian auf Ubuntu, Gigabyte Brix, Z-Wave, Zigbee, Enocean

Benutzeravatar
udo1toni
Beiträge: 15247
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Monitor an anderem Rechner(Linux) aufwecken

Beitrag von udo1toni »

Das Minimum für ein funktionierendes exec Thing wäre vermutlich

Code: Alles auswählen

UID: exec:command:test
label: Befehl
thingTypeUID: exec:command
configuration:
  transform: REGEX((.*))
  interval: 0
  autorun: true
  command: /bin/bash panelon.sh %2$s
  timeout: 15
wobei man allerdings vermutlich auch noch den absoluten Pfad zu panelson.sh angeben müsste.
autorun: true sorgt dafür, dass beim Update des input Channels der Befehl ausgeführt wird. Dabei landet der an den input channel gesendete Befehl in %2$s, wird also als PArameter an das Script übergeben.
In der Whitelist muss exakt der Term hinter dem Doppelpunkt stehen (allerdings ohne das führende Leerzeichen).
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

ollis112
Beiträge: 109
Registriert: 18. Aug 2018 11:36
Answers: 0
Wohnort: Alsbach-Hähnlein

Re: Monitor an anderem Rechner(Linux) aufwecken

Beitrag von ollis112 »

So sieht mein Item und mein Thing aus

Aber es funktioniert leider nicht...
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Openhab3.3.0, openhabian auf Ubuntu, Gigabyte Brix, Z-Wave, Zigbee, Enocean

Benutzeravatar
udo1toni
Beiträge: 15247
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Monitor an anderem Rechner(Linux) aufwecken

Beitrag von udo1toni »

Bitte vermeide Screenshots, zum Teilen der Konfiguration gibt es die Codeanzeige, den Code kannst Du hier im Forum einfach als Text einfügen (aber bitte unbedingt auch als Code markieren, da der verwendete Code (yaml) Einrückungen verwendet, die hier in der Anzeige entfernt werden, wenn der Code als normaler Text gepostet wird.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
udo1toni
Beiträge: 15247
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Monitor an anderem Rechner(Linux) aufwecken

Beitrag von udo1toni »

Stelle bitte das Profile auf Standard. Das Profile hat nichts mit dem verwendeten Binding zu tun, über das Profile kann man den Status eines Items (oder auch die Befehlsseite, also In/Out zwischen Channel und Item) über verschiedene Optionen manipulieren, hier z.B. über ein Script. Das willst Du hier aber nicht tun...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

mad-mike
Beiträge: 491
Registriert: 6. Jan 2021 18:05
Answers: 3

Re: Monitor an anderem Rechner(Linux) aufwecken

Beitrag von mad-mike »

Moin,

Ich habe 2 wege erfolgreich ausgeführt:

Bitte nicht steinigen :oops: :mrgreen:
Weg nummer 1 ist direkt:
Im EXEC Thing den Befehl direkt eingeben und gleichen Befehl auch in die White list.
Hier mein Beispiel...

Code: Alles auswählen

sshpass -p habopen ssh -tt -p 8101 -o StrictHostKeyChecking=no openhab@localhost bundle:restart org.openhab.io.openhabcloud

und Nummer 2 habe ich auch über das Script erledigt:
EXEC Thing Befehl:

Code: Alles auswählen

/etc/openhab/scripts/restart.sh
Hier musste auch in die Whitelist exakt dieser Befehl eingetragen werden.
Und in dieser restart.sh der ausführende Befehle.




Schmeisst dein Log denn eine Fehlermeldung bei Ausführung vom EXEC Befehl??

ein

Code: Alles auswählen

 /bin/bash
oder
musste ich in meinem Fall nicht im EXEC Thing eintragen...
Gruss mad-mike

openHABian 4.3.5 auf Raspberry Pi 4 Mod. b (8GB) ;)

Antworten