Seite 1 von 1

Script ausführen verlangt Berechtigung

Verfasst: 6. Jan 2020 19:23
von Aggro600
In einer Rule versuche ich ein Script (.sh) zu starten.
Das Script wird gestartet aber es gibt mir einige Fehler:

Code: Alles auswählen

"cp: reguläre Datei '/opt/openhab2/persistence/rrd4j/Anwesend.rrd' kann nicht angelegt werden: Keine Berechtigung"
Mein Script sieht so aus:

Code: Alles auswählen

#!/bin/bash
cp -r /var/lib/openhab2/persistence/rrd4j/* /opt/openhab2/persistence/rrd4j/
cp -r /var/lib/openhab2/persistence/mapdb/* /opt/openhab2/persistence/mapdb/
#echo "Persistence gespeichert"
#sudo reboot
setzte ich noch "sudo" davor bekomme ich diesen Fehler:

Code: Alles auswählen

Wir gehen davon aus, dass der lokale Systemadministrator Ihnen die
Regeln erklärt hat.  Normalerweise läuft es auf drei Regeln hinaus:

    #1) Respektieren Sie die Privatsphäre anderer.
    #2) Denken Sie nach, bevor Sie tippen.
    #3) Mit großer Macht kommt große Verantwortung.

[sudo] Passwort für openhab:

Ich möchte einfach nur, dass wenn ich den Raspberry neustarte das meine Persistence gespeichert wird. Sonst wird sie nur alle 4 Stunden gespeichert.


Mein zweites Problem ist:

Ich möchte das beim neustart und beim Shoutdown die Rule ausgeführt wird.
Macht man das so? Bleibt denn dann noch genug Zeit um die Persistence zu speichern?

Code: Alles auswählen

rule "Soutdown"
when
    System shuts down 
then
.....

Re: Script ausführen verlangt Berechtigung

Verfasst: 6. Jan 2020 19:50
von heiko74
Hallo,

die Fehlermeldung sagt es schon, wie sieht es mit den Berechtigungen aus? Mir fallen deshalb 6 Mögliche Fehlerquellen ein. Darf der Benutzer "openhab":
1. aus dem Verzeichnis "/var/lib/openhab2/persistence/rrd4j/" lesen?
2. aus dem Verzeichnis "/var/lib/openhab2/persistence/mapdb/" lesen?
3. in das Verzeichnis "/opt/openhab2/persistence/rrd4j/" schreiben?
4. in das Verzeichnis "/opt/openhab2/persistence/mapdb/" schreiben?
5. die existierenden Dateien in "/opt/openhab2/persistence/rrd4j/" überschreiben?
5. die existierenden Dateien in "/opt/openhab2/persistence/mapdb/" überschreiben?

Zum zweiten Problem habe ich folgendes Gefunden.
https://www.openhab.org/docs/configurat ... d-triggers
Einfach mal mit Hilfe eines LogEintrages (z.B. logDebug("shutdown", "openHAB shutdown")) probieren.

Re: Script ausführen verlangt Berechtigung

Verfasst: 6. Jan 2020 19:56
von Aggro600
heiko74 hat geschrieben: 6. Jan 2020 19:50 Hallo,

die Fehlermeldung sagt es schon, wie sieht es mit den Berechtigungen aus? Mir fallen deshalb 6 Mögliche Fehlerquellen ein. Darf der Benutzer "openhab":
1. aus dem Verzeichnis "/var/lib/openhab2/persistence/rrd4j/" lesen?
2. aus dem Verzeichnis "/var/lib/openhab2/persistence/mapdb/" lesen?
3. in das Verzeichnis "/opt/openhab2/persistence/rrd4j/" schreiben?
4. in das Verzeichnis "/opt/openhab2/persistence/mapdb/" schreiben?
5. die existierenden Dateien in "/opt/openhab2/persistence/rrd4j/" überschreiben?
5. die existierenden Dateien in "/opt/openhab2/persistence/mapdb/" überschreiben?

Zum zweiten Problem habe ich folgendes Gefunden.
https://www.openhab.org/docs/configurat ... d-triggers
Einfach mal mit Hilfe eines LogEintrages (z.B. logDebug("shutdown", "openHAB shutdown")) probieren.
Ich habe in die sudoers

Code: Alles auswählen

openhab ALL=(ALL) NOPASSWD: ALL
geschrieben, jetzt klappt es.

Re: Script ausführen verlangt Berechtigung

Verfasst: 6. Jan 2020 20:19
von Aggro600
Die Regel die beim Booten triggern soll klappt mit
rule "Boot"
when
System started
then

nur das runterfahren geht nicht mit
System shuts down

Re: Script ausführen verlangt Berechtigung

Verfasst: 7. Jan 2020 20:19
von heiko74
Hallo,

der PC fährt nicht mit "System shuts down" herunter. Dies ist ein Trigger um eine rule zu triggern. Damit kann man Aktionen beim herunterfahren hinzufügen.

Füge folgendes in eine Rule ein:

Code: Alles auswählen

rule "Rule shdw"
when
    System shuts down
then
    logDebug("shutdown", "openHAB shutdown")
end
Den Service neu starten mit

Code: Alles auswählen

systemctl restart openhab2
Dann in

Code: Alles auswählen

/var/log/openhab2/openhab.log
nachschauen, ob es eine Zeile mit "openHAB shutdown" gibt.