Ausführen eines Bash Skriptes aus OH3 gelingt nicht

Hier bitte alles rein was Off-topic ist.

Moderatoren: Cyrelian, seppy

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

Re: Ausführen eines Bash Skriptes aus OH3 gelingt nicht

Beitrag von udo1toni »

Warum änderst Du den Aufruf ab?

Und bitte... /etc/openhab/scripts/ ist nicht der Speicherort für Shell Scripte.

Die Zeitangabe beim Aufruf ist nur relevant, wenn Du den Rückgabewert des Scripts auswerten möchtest, ansonsten kannst Du sie auch weg lassen.

Was steht in wolshutdown.sh drin? (Passwort kannst Du ja unkenntlich machen).
Funktioniert der Aufruf des Scripts, wenn Du es direkt ausführst?
openHAB4.3.0 stable in einem Debian-Container (bookworm) (Proxmox 8.3.2, LXC), mit openHABian eingerichtet

freeman121083
Beiträge: 129
Registriert: 16. Jul 2018 06:32
Answers: 0

Re: Ausführen eines Bash Skriptes aus OH3 gelingt nicht

Beitrag von freeman121083 »

und ist das normal das nichts mit geloggt wird?

im Log sehe ich leider nicht ob das Script ausgeführt wird oder nicht, geschweige denn wo das Problem ist?

freeman121083
Beiträge: 129
Registriert: 16. Jul 2018 06:32
Answers: 0

Re: Ausführen eines Bash Skriptes aus OH3 gelingt nicht

Beitrag von freeman121083 »

Wenn ich manuell aufrufe funktioniert es:

Code: Alles auswählen

sudo net rpc -S 192.168.2.127 -U Autodarts%PASS shutdown -s -t 2

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

Re: Ausführen eines Bash Skriptes aus OH3 gelingt nicht

Beitrag von udo1toni »

Nein, sudo darf an dieser Stelle nicht verwendet werden, das muss unbedingt ohne sudo gehen.

Geloggt wird ansonsten nur, was entweder explizit geloggt wird (d.h. z.B. über den Befehl logInfo()) oder was einen Fehler verursacht.
Das "Minimum mit Logging wäre also so eine Rule:

Code: Alles auswählen

rule "PC Shutdown"
when
    Item test received command ON
then
    logInfo("shutdown","Rule wurde ausgelöst!")
    executeCommandLine("~/scripts/wolshutdown.sh")
end
Mehr Infos:

Code: Alles auswählen

rule "PC Shutdown"
when
    Item test received command ON
then
    logInfo("shutdown","Rule wurde ausgelöst!")
    val answer = executeCommandLine(Duration.ofSeconds(5),"~/scripts/wolshutdown.sh")
    logInfo("shutdown","Das Ergebnis des Scripts ist {}",answer)
end
Das Verzeichnis ~/scripts/ musst Du zunächst anlegen, und zwar in $OPENHAB_USERDATA bzw. /var/lib/openhab/, also

Code: Alles auswählen

mkdir /var/lib/openhab/scripts/
mv /etc/openhab/scripts/wolshutdown.sh /var/lib/openhab/scripts/
Der Name wolshutdown.sh ist natürlich falsch ;) rpcshutdown.sh wäre deutlich besser...
Das Script muss ausführbar sein, und zwar unbedingt für den User openhab (der User openhabian hat mit der Ausführung später nichts zu tun)
Je nachdem, was in wolshutdown.sh tatsächlich drin steht (mir geht es nicht darum, ob die dort hinterlegte Befehlszeile funktioniert, sondern wie diese im Script notiert ist, und ob das Script als solches funktioniert), könnte man auch dort noch Logging ergänzen, insbesondere einen passenden Output bzw. Rückgabewert (0 ist gewöhnlich der Rückgabewert für "Script wurde ordnungsgemäß ausgeführt", jeder von 0 abweichende Rückgabewert wäre dann eine Fehlermeldung) könnte das Script setzen, so dass die zweite Variante (mit Duration...) auch eine sinnvolle Antwort ausgeben kann.
openHAB4.3.0 stable in einem Debian-Container (bookworm) (Proxmox 8.3.2, LXC), mit openHABian eingerichtet

freeman121083
Beiträge: 129
Registriert: 16. Jul 2018 06:32
Answers: 0

Re: Ausführen eines Bash Skriptes aus OH3 gelingt nicht

Beitrag von freeman121083 »

Und wie immer TipTop!

ich fasse zusammen:

OpenHAB Version 4.2.2

ich habe einen ThinkCentre M9x Win11 auf dem die Anwendung Autodarts (Online Dart spielen) läuft. Der Rechner ist in der Garage im Endausbau "nicht sichtbar verbaut". An diesem sind 3 Kameras für Autodarts, Netzwerk und Funk-Tastatur und Maus angeschlossen. Mein Ziel war es den Rechner entweder über die BasiUI oder später über die Alexa (Sprachbefehl) ein bzw. auszuschalten. Das Funktioniert jetzt mit deiner Hilfe, dafür vielen Dank!

Rule zum herunterfahren:

Code: Alles auswählen

rule "PC Autodarts Shutdown"
when
    Item AutodartsShutdown received command OFF
then
	logInfo("shutdown","Rule wurde ausgelöst!")
        executeCommandLine("/var/lib/openhab/scripts/wolshutdown.sh")
    
end
script wolshutdown.sh:

Code: Alles auswählen

net rpc -S 192.168.2.127 -U Autodarts%PASS shutdown -s -t 2
Rule zum aufwecken (WOL)

Code: Alles auswählen

rule " wake on lan"
when
    Item Autodarts received command ON
then
    val actions = getActions("network", "network:pingdevice:server")
    actions.sendWakeOnLanPacketViaMac()
end
Ja über die Begrifflichkeiten lässt sich streiten... ;)

Das einzige was jetzt se­mi­pro­fes­si­o­nell ist:

ich habe die switch items über das Network Binding angelegt, so:

Code: Alles auswählen

Switch Autodarts "PC Autodarts starten [%s]"			{ channel="network:pingdevice:server:online"}
Switch AutodartsShutdown "PC Autodarts herunterfahren"		{ channel="network:pingdevice:server:online"}
Ich werde das nach Weihnachten noch ändern mit einem switch für starten und herunterfahren.
Das Problem dabei ist, dass die Netzwerkschnittstelle wegen WOL dauerhaft an ist und somit sind natürlich auch die switch items in der BasicUI dauerhaft an. Könnte ich mit dem Network Binding auch auf ein bestimmten Dienst/Port abfragen stellen? Damit ich mir anzeigen lassen kann ob der Rechner wirklich an ist? Denn jetzt ist der Rechner aus und der ping request funktioniert durch die dauerhaft eingeschalteter Netzwerk Schnittstelle trotzdem.

Erst einmal vielen vielen Dank und schöne Feiertage!

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

Re: Ausführen eines Bash Skriptes aus OH3 gelingt nicht

Beitrag von udo1toni »

Wie gesagt, eine Rule und ein Item reichen. Ich nutze das hier um einen vdr Server gezielt ein- und auszuschalten, anderer Shutdown-Befehl, ansonsten gleicher Aufbau...
openHAB4.3.0 stable in einem Debian-Container (bookworm) (Proxmox 8.3.2, LXC), mit openHABian eingerichtet

freeman121083
Beiträge: 129
Registriert: 16. Jul 2018 06:32
Answers: 0

Re: Ausführen eines Bash Skriptes aus OH3 gelingt nicht

Beitrag von freeman121083 »

habs doch schon geändert, mit dem logging.

Alles super.

kurze andere Frage bezüglich der BasicUI

Warum fehlt mir immer beim letzten Icon (ganz rechts) die Linie darunter?

und wie immer besten DANK!
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

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

Re: Ausführen eines Bash Skriptes aus OH3 gelingt nicht

Beitrag von udo1toni »

Die Frage ist eher, warum Du unter dem 2. Item eine Linie hast :)

Die Linie trennt die untereinander stehenden Items. Da Du unter dem Item in der dritten Spalte kein weiteres Item hast, muss dort auch keine Linie gezeichnet werden
openHAB4.3.0 stable in einem Debian-Container (bookworm) (Proxmox 8.3.2, LXC), mit openHABian eingerichtet

Antworten