Ausführen eines Bash Skriptes aus OH3 gelingt nicht
- udo1toni
- Beiträge: 14950
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Ausführen eines Bash Skriptes aus OH3 gelingt nicht
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?
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
-
- Beiträge: 129
- Registriert: 16. Jul 2018 06:32
Re: Ausführen eines Bash Skriptes aus OH3 gelingt nicht
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?
im Log sehe ich leider nicht ob das Script ausgeführt wird oder nicht, geschweige denn wo das Problem ist?
-
- Beiträge: 129
- Registriert: 16. Jul 2018 06:32
Re: Ausführen eines Bash Skriptes aus OH3 gelingt nicht
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
- udo1toni
- Beiträge: 14950
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Ausführen eines Bash Skriptes aus OH3 gelingt nicht
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:
Mehr Infos:
Das Verzeichnis ~/scripts/ musst Du zunächst anlegen, und zwar in $OPENHAB_USERDATA bzw. /var/lib/openhab/, also
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.
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
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
Code: Alles auswählen
mkdir /var/lib/openhab/scripts/
mv /etc/openhab/scripts/wolshutdown.sh /var/lib/openhab/scripts/
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
-
- Beiträge: 129
- Registriert: 16. Jul 2018 06:32
Re: Ausführen eines Bash Skriptes aus OH3 gelingt nicht
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:
script wolshutdown.sh:
Rule zum aufwecken (WOL)
Ja über die Begrifflichkeiten lässt sich streiten...
Das einzige was jetzt semiprofessionell ist:
ich habe die switch items über das Network Binding angelegt, so:
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!
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
Code: Alles auswählen
net rpc -S 192.168.2.127 -U Autodarts%PASS shutdown -s -t 2
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
Das einzige was jetzt semiprofessionell 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"}
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!
- udo1toni
- Beiträge: 14950
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Ausführen eines Bash Skriptes aus OH3 gelingt nicht
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
-
- Beiträge: 129
- Registriert: 16. Jul 2018 06:32
Re: Ausführen eines Bash Skriptes aus OH3 gelingt nicht
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!
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.
- udo1toni
- Beiträge: 14950
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Ausführen eines Bash Skriptes aus OH3 gelingt nicht
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
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