[phpBB Debug] PHP Warning: in file [ROOT]/ext/kinerity/bestanswer/event/main_listener.php on line 514: Undefined array key "poster_answers"
[phpBB Debug] PHP Warning: in file [ROOT]/ext/kinerity/bestanswer/event/main_listener.php on line 514: Undefined array key "poster_answers"
[phpBB Debug] PHP Warning: in file [ROOT]/ext/kinerity/bestanswer/event/main_listener.php on line 514: Undefined array key "poster_answers"
[phpBB Debug] PHP Warning: in file [ROOT]/ext/kinerity/bestanswer/event/main_listener.php on line 514: Undefined array key "poster_answers"
[phpBB Debug] PHP Warning: in file [ROOT]/ext/kinerity/bestanswer/event/main_listener.php on line 514: Undefined array key "poster_answers"
openhabforum.de • [GELÖST] OH 2.5.5 - Frage zu Shellscript und Whitelist
Seite 1 von 2

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

Verfasst: 27. Jun 2020 14:17
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

Re: OH 2.5.5 - Frage zu Shellscript und Whitelist

Verfasst: 27. Jun 2020 14:42
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

Re: OH 2.5.5 - Frage zu Shellscript und Whitelist

Verfasst: 27. Jun 2020 15:03
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?

Re: OH 2.5.5 - Frage zu Shellscript und Whitelist

Verfasst: 27. Jun 2020 15:09
von peter-pan
sieht eigentlich gut aus. Aber das "gettext" in deinem Thing-File kenn ich nicht ????

Edit: Sorry vergiss es :oops:

Re: OH 2.5.5 - Frage zu Shellscript und Whitelist

Verfasst: 27. Jun 2020 15:17
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

Re: OH 2.5.5 - Frage zu Shellscript und Whitelist

Verfasst: 27. Jun 2020 15:27
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

Re: OH 2.5.5 - Frage zu Shellscript und Whitelist

Verfasst: 27. Jun 2020 15:29
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

Re: OH 2.5.5 - Frage zu Shellscript und Whitelist

Verfasst: 27. Jun 2020 15:30
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

Re: OH 2.5.5 - Frage zu Shellscript und Whitelist

Verfasst: 27. Jun 2020 15:33
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

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

Verfasst: 27. Jun 2020 15:34
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 ;)