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
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
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,
Code: Alles auswählen
#!/bin/bash
sudo /bin/systemctl restart openhab
echo "Restart openhab " >> /etc/openhab/scripts/test.txt
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.