[GELÖST] OH 2.5.5 - Frage zu Shellscript und Whitelist

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

thomas_w

[GELÖST] OH 2.5.5 - Frage zu Shellscript und Whitelist

Beitrag von thomas_w »

viewtopic.php?p=15350#p15350

Problem:
An obigem Beispiel von @PeterA ich habe versucht dies hier nachzubauen und bekomme die Meldung:

Code: Alles auswählen

2020-06-27 14:09:40.703 [WARN ] [ng.exec.internal.handler.ExecHandler] - Tried to execute '/etc/openhab2/scripts/./getText.sh', but it is not contained in whitelist.
Frage:
Wie geht denn das mit der exec.whitelist genau? In folgendem Link steht, das gesamte Kommando soll da drin stehen:
https://www.openhab.org/addons/bindings ... ec-binding

In meinem Fall also
getText.sh:

Code: Alles auswählen

#!/bin/bash

TODAY=$(date)
HOST=$(hostname)
echo "Date: $TODAY  Host:$HOST" >> /etc/openhab2/html/getText.txt
exec.whitelist:

Code: Alles auswählen

# For security reasons all commands that are used by the exec binding or transformation need to be whitelisted.
# Every command needs to be listed on a separate line below.
echo "Date: $TODAY  Host:$HOST" >> /etc/openhab2/html/getText.txt
Klappt aber nicht...

Danke für Tipps...
Thomas
von peter-pan » 27. Jun 2020 14:42
In der Whitelist sollte das Kommando so stehen, wie du es in deinem Things-File definiert hast.

Beispiel:
.things

Code: Alles auswählen

Thing exec:command:my_user "Angemeldet ist" @ "Buero"  
                    [command="/bin/bash /etc/openhab2/scripts/test.sh", interval=120, timeout=30, transform="REGEX((.*?))"]
Thing exec:command:cpu_temp "OH2-PI Temperatur" @ "Buero" 
                    [command="/bin/bash /etc/openhab2/scripts/cpu_temp.sh", interval=120, timeout=30, transform="REGEX((.*?))"]
Die passende exec.whitelist würde dann so aussehen:

Code: Alles auswählen

/bin/bash /etc/openhab2/scripts/cpu_temp.sh
/bin/bash /etc/openhab2/scripts/test.sh
Gehe zur vollständigen Antwort
Zuletzt geändert von thomas_w am 27. Jun 2020 15:28, insgesamt 1-mal geändert.

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: OH 2.5.5 - Frage zu Shellscript und Whitelist

Beitrag von peter-pan »

In der Whitelist sollte das Kommando so stehen, wie du es in deinem Things-File definiert hast.

Beispiel:
.things

Code: Alles auswählen

Thing exec:command:my_user "Angemeldet ist" @ "Buero"  
                    [command="/bin/bash /etc/openhab2/scripts/test.sh", interval=120, timeout=30, transform="REGEX((.*?))"]
Thing exec:command:cpu_temp "OH2-PI Temperatur" @ "Buero" 
                    [command="/bin/bash /etc/openhab2/scripts/cpu_temp.sh", interval=120, timeout=30, transform="REGEX((.*?))"]
Die passende exec.whitelist würde dann so aussehen:

Code: Alles auswählen

/bin/bash /etc/openhab2/scripts/cpu_temp.sh
/bin/bash /etc/openhab2/scripts/test.sh
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

thomas_w

Re: OH 2.5.5 - Frage zu Shellscript und Whitelist

Beitrag von thomas_w »

peter-pan hat geschrieben: 27. Jun 2020 14:42 In der Whitelist sollte das Kommando so stehen, wie du es in deinem Things-File definiert hast.
Danke... sieht logisch aus...

bei mir passiert

log:

Code: Alles auswählen

2020-06-27 14:58:01.539 [WARN ] [ng.exec.internal.handler.ExecHandler] - Tried to execute '/bin/bash /etc/openhab2/scripts/./getText.sh', but it is not contained in whitelist.
Things:

Code: Alles auswählen

Thing exec:command:gettext [command="/bin/bash /etc/openhab2/scripts/./getText.sh", interval=60, timeout=5, autorun=false] // Text lesen für die Sitemap
misc/exec.whitelist:

Code: Alles auswählen

# For security reasons all commands that are used by the exec binding or transformation need to be whitelisted.
# Every command needs to be listed on a separate line below.
/bin/bash /etc/openhab2/scripts/./getText.sh
Habe ich was übersehen?

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: OH 2.5.5 - Frage zu Shellscript und Whitelist

Beitrag von peter-pan »

sieht eigentlich gut aus. Aber das "gettext" in deinem Thing-File kenn ich nicht ????

Edit: Sorry vergiss es :oops:
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: OH 2.5.5 - Frage zu Shellscript und Whitelist

Beitrag von peter-pan »

Noch 'ne kleine Ergänzung:
das Bash-Script "cpu_temp.sh" sieht dann so aus:

Code: Alles auswählen

#!/bin/bash
INPUT=$(/bin/cat /sys/class/thermal/thermal_zone0/temp)
TEMP=$(echo "scale=2; $INPUT / 1000" | bc)
echo $TEMP
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

thomas_w

Re: OH 2.5.5 - Frage zu Shellscript und Whitelist

Beitrag von thomas_w »

peter-pan hat geschrieben: 27. Jun 2020 15:17 das Bash-Script "cpu_temp.sh" sieht dann so aus:

Code: Alles auswählen

#!/bin/bash
INPUT=$(/bin/cat /sys/class/thermal/thermal_zone0/temp)
TEMP=$(echo "scale=2; $INPUT / 1000" | bc)
echo $TEMP
Ja, dass mit der CPU Temperatur kann ich auch gleich gut gebrauchen... ;-)

Wie kommen die Daten von $TEMP dann in die Sitemap? Per Webview oder per Items?

Danke und Grüße
Thomas

thomas_w

Re: OH 2.5.5 - Frage zu Shellscript und Whitelist

Beitrag von thomas_w »

peter-pan hat geschrieben: 27. Jun 2020 14:42 In der Whitelist sollte das Kommando so stehen, wie du es in deinem Things-File definiert hast.

Die passende exec.whitelist würde dann so aussehen:

Code: Alles auswählen

/bin/bash /etc/openhab2/scripts/cpu_temp.sh
/bin/bash /etc/openhab2/scripts/test.sh
Ich mußte auch noch die RegEx Transformation in OpenHAB installieren.


So, dass war die Lösung. Ich hatte in der Zwischenzeit natürlich wieder was wegoptimiert.. :roll:

Nun aber tut's !!!

Danke und Grüße
Thomas
Zuletzt geändert von thomas_w am 27. Jun 2020 15:31, insgesamt 1-mal geändert.

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

Re: OH 2.5.5 - Frage zu Shellscript und Whitelist

Beitrag von udo1toni »

Bitte entferne das /./ aus der Zeile (sowohl im exec-Aufruf als auch in der whitelist). Der einzelne Punkt zeigt auf das aktuelle Verzeichnis und die Auflösung des Befehls läuft dann nicht sauber. Ebenso ist es nicht erlaubt, ein Leerzeichen vor dem ersten Befehl einzufügen, obwohl das in der Konsole tadellos funktioniert (und verhindert, dass der Befehl in der History landet). Der Aufruf muss also so aussehen:

Code: Alles auswählen

/bin/bash /etc/openhab2/scripts/getText.sh
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

thomas_w

Re: OH 2.5.5 - Frage zu Shellscript und Whitelist

Beitrag von thomas_w »

udo1toni hat geschrieben: 27. Jun 2020 15:30 Bitte entferne das /./ aus der Zeile (sowohl im exec-Aufruf als auch in der whitelist). Der einzelne Punkt zeigt auf das aktuelle Verzeichnis und die Auflösung des Befehls läuft dann nicht sauber. Ebenso ist es nicht erlaubt, ein Leerzeichen vor dem ersten Befehl einzufügen, obwohl das in der Konsole tadellos funktioniert (und verhindert, dass der Befehl in der History landet). Der Aufruf muss also so aussehen:

Code: Alles auswählen

/bin/bash /etc/openhab2/scripts/getText.sh
Erledigt! Den Punkt "." hatte ich sowieso nicht verstanden... :oops:

Danke und Grüße
Thomas

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: [GELÖST] OH 2.5.5 - Frage zu Shellscript und Whitelist

Beitrag von peter-pan »

Du legst ein String-Item an und wenn du es numerisch haben willst, dann auch noch ein Number-Item. Dann brauchst du aber noch eine Regel zum umwandeln.

.items:

Code: Alles auswählen

String CPU_Temp               "OH2_CPU Temp-String EXEC [%s °C]"    <temperature> (gSystem)    { channel="exec:command:cpu_temp:output"}
Number CPU_Temp_num           "CPU-OH2-Pi Temperatur EXEC[%.2f °C]" <temperature> (gSystem)
und die Regel zum umwandeln in numerisch:
.rules:

Code: Alles auswählen

rule "OpenhabPi Temperature String to Number"
  when
    Item CPU_Temp changed
  then
    CPU_Temp_num.postUpdate(Float::parseFloat(String::format("%s",CPU_Temp.state).replace(' ','')))
end
Nun kannst du das Item in die Sitemap übernehmen, welches du willst ;)
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Antworten