Reboot item mit Exec
- PeterA
- Beiträge: 1106
- Registriert: 8. Feb 2019 12:12
Re: Reboot item mit Exec
Du hast ja auch nun meine Rule abgeändert....
Für mein "Konstrukt" brauchst Du kein Thing.
Nur ein Item und die Rule.
Für mein "Konstrukt" brauchst Du kein Thing.
Nur ein Item und die Rule.
- OpenHab 2.4
#PWRUP
#PWRUP
- udo1toni
- Beiträge: 15249
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Reboot item mit Exec
Wie oben erwähnt, executeCommandLine() akzeptiert keine Leerzeichen. Hinterlegt ist /sbin/systemctl, Du versuchst es aber mit /bin/systemctl.Backbe01 hat geschrieben: ↑9. Feb 2022 10:55 Hallo Peter,
habe ich direkt ausprobiert. Leider greift meine rule nicht! (Item natürlich angepasst)
Evtl. muss ich den Befehl auch wieder freigeben, obwohl der Befehl eigentlich schon hinterlegt sein sollte:Code: Alles auswählen
rule "restart openHAB" when Item Flag_System received command "Restart" then logInfo("Flag_System", "Restart openHAB") executeCommandLine("sudo /bin/systemctl restart openhab.service") end
Code: Alles auswählen
openhab ALL=(ALL) NOPASSWD: /sbin/shutdown, /sbin/poweroff, /sbin/systemctl, /sbin/reboot
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 123
- Registriert: 19. Jul 2019 21:04
Re: Reboot item mit Exec
...Es mag einfach nicht klappen...
gebe ich in die CommandoZeile
startet OH3 nach sudo PW neu.
In sudoers habe ich folgende Einträge
Weder mit 1. Zeile, noch mit zweiter Zeile starten OH neu
Rule habe ich alle Möglichkeiten durch:
Nein... wir werden keine Freunde... Ist aber auch gar nicht so schlimm. Habe derzeit noch andere Probleme mit OH (rrd).
Danke trotzdem! Ich nehme den Thread bei anderer Gelegenheit nochmal auf...
gebe ich in die CommandoZeile
Code: Alles auswählen
sudo /bin/systemctl restart openhab.service
In sudoers habe ich folgende Einträge
Code: Alles auswählen
openhab ALL=(ALL) NOPASSWD: /sbin/shutdown, /sbin/poweroff, /sbin/systemctl, /sbin/systemctl restart openhab.service
#openhab ALL=(ALL) NOPASSWD: ALL
Rule habe ich alle Möglichkeiten durch:
Code: Alles auswählen
executeCommandLine("sudo","systemctl restart openhab.service")
executeCommandLine("sudo","/sbin/systemctl restart openhab.service")
executeCommandLine("sudo","/bin/systemctl restart openhab.service")
executeCommandLine("sudo /bin/systemctl restart openhab.service")
executeCommandLine("sudo /sbin/systemctl restart openhab.service")
Danke trotzdem! Ich nehme den Thread bei anderer Gelegenheit nochmal auf...
OH 4.1.0M2 auf nuc in Docker
-
- Beiträge: 302
- Registriert: 7. Mär 2021 14:49
Re: Reboot item mit Exec
angeregt von diesem Thema hab ich gestern meine Rule zum Restart von openhab auch mal angepasst.
hab mal eine kleine Zusammenstellung was für die Funktion alles benötigt wird.
in der Rule hab ich 2 Varianten versucht, welche aber beide gehen.
1. die Rule
2. im Verzeichnis /misc in der Datei exec.whitelist folgendes einfügen,
für den Befehl mit Script ausführen,
oder für den Befehl direkt in der Rule,
das openhab.sh Script sieht so aus,
3. in der Datetei /etc/sodoers
die Datei sodoers kann auch je nach System anders heißen oder wo anders sein!
und das schöne daran, wenn ein Befehl mal richtig funktioniert, gehen alle andere System Befehle auch!
z.B. Asterisk Reload, Server reload, shutdown, Verzeichnisse Usb-Laufwerke mounten, unmount, usw.
hab mal eine kleine Zusammenstellung was für die Funktion alles benötigt wird.
in der Rule hab ich 2 Varianten versucht, welche aber beide gehen.
1. die Rule
Code: Alles auswählen
rule "openhab System Befehle"
when Item OH_Service changed
then
if (OH_Service.state=="restart") {
//executeCommandLine(Duration.ofSeconds(60),"/etc/openhab/scripts/openhab.sh") // mit sh Script, geht auch !
Thread::sleep(500) // wartet etwas und
OH_Service.postUpdate("Pause") // schalte Item OH_Service auf nix tun!
// weiß nicht ob das gebraucht wird? will aber vermeiden das es eine dauerschleife wird!
logInfo("OH3", "Restart")
executeCommandLine(Duration.ofSeconds(60), "sudo","systemctl","restart","openhab") // geht auch!
}
end
für den Befehl mit Script ausführen,
Code: Alles auswählen
/etc/openhab/scripts/openhab.sh
Code: Alles auswählen
"sudo","systemctl","restart","openhab"
Code: Alles auswählen
#!/bin/bash
sudo /bin/systemctl restart openhab
echo "Restart openhab " >> /etc/openhab/scripts/test.txt
Code: Alles auswählen
openhab ALL=(ALL) NOPASSWD: ALL eingefügen
und das schöne daran, wenn ein Befehl mal richtig funktioniert, gehen alle andere System Befehle auch!
z.B. Asterisk Reload, Server reload, shutdown, Verzeichnisse Usb-Laufwerke mounten, unmount, usw.
OH 4.3.0 auf HP 26o G1 Dm Mini Pc mit MX_Linux
-
- Beiträge: 123
- Registriert: 19. Jul 2019 21:04
Re: Reboot item mit Exec
Ah!!! Ich glaube jetzt hab ich’s was Udo meinte mit keine Leerzeichen! Bei mir fehlten die „,“.
Muss ich nachher gleich testen und werde berichten…
Muss ich nachher gleich testen und werde berichten…
OH 4.1.0M2 auf nuc in Docker
- udo1toni
- Beiträge: 15249
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Reboot item mit Exec
Und noch mal... systemctl liegt in /bin, nicht in /sbin, es bringt also nichts, bei NOPASSWD /sbin/systemctl anzugeben. Das KANN nicht funktionieren!
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 123
- Registriert: 19. Jul 2019 21:04
Re: Reboot item mit Exec
Vielen Dank, es läuft!! Ich poste noch meine aktuelle Dateien, vielleicht gibt es ja noch mehr solcher DAU´s wie mich
sduoer: (für OH3)
Rule (OH3)
item

sduoer: (für OH3)
Code: Alles auswählen
# Allow openhab user to execute shutdown, poweroff, and systemctl commands
openhab ALL=(ALL) NOPASSWD: /sbin/shutdown, /sbin/poweroff, /bin/systemctl, /sbin/reboot, /bin/systemctl restart openhab.service
#openhab ALL=(ALL) NOPASSWD: ALL
Code: Alles auswählen
rule "Reboot openHAB"
when
Item Flag_System received command "Reboot"
then
logInfo("Flag_System", "Rebooting openHAB")
executeCommandLine("sudo","reboot")
end
rule "Shut down openHAB"
when
Item Flag_System received command "PowerOff"
then
logInfo("Flag_System", "Shutting down openHAB")
executeCommandLine("sudo","poweroff")
end
rule "restart openHAB"
when
Item Flag_System received command "Restart"
then
logInfo("Flag_System", "Restart openHAB")
executeCommandLine("sudo","/bin/systemctl","restart","openhab.service")
end
Code: Alles auswählen
String Flag_System "System" <switch> (greboot) ["Switch"]
OH 4.1.0M2 auf nuc in Docker
- udo1toni
- Beiträge: 15249
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Reboot item mit Exec

openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet