Also...
madmike hat geschrieben: ↑14. Jan 2019 18:14
Nun tauchen noch ein paar Fragen auf die ich als nicht so erfahrener Linuxuser habe. Zum einen hattest Du die Frage, wo die backup.sh liegt.
Sie liegt im Ordner /home/openhabian.
openHAB läuft unter dem User openhab, nicht unter dem User openhabian. das home-Verzeichnis ist gewöhnlich dem Eigentümer vorbehalten. Ausnahmen sind nur User, die kein gewöhnliches home-Verzeichnis haben (z.B. der user openhab hat das openHAB Userdata Verzeichnis als home-Verzeichnis, dieses ist für jeden User lesbar. Das backup-script sollte aber besser unter /etc/openhab2/scripts/ liegen.
Der Befehl den Du mit in Deiner Antwort hattest, kommt dieser in die bash.datei oder muss ich Ihn einmal ausführen und das war es ??.
Dein Script enthält den Befehl sudo. sudo fordert beim Aufruf ein Admin-Passwort an. Die erste Voraussetzung ist, dass der User überhaupt berechtigt ist, sudo zu starten. Da der user openhab kein Passwort eingeben kann, musst Du außerdem dafür sorgen, dass keine Passwortabfrage kommt. Aber Achtung! Wenn man das falsch macht, reißt man eine Scheunenwand als Sicherheitslücke ein.
Der Befehl
ruft den default Editor auf, um die sudoers zu bearbeiten. Dabei stellt visudo beim speichern sicher, dass die Datei gültig ist. Deshalb immer visudo verwenden! In der Datei, die angezeigt wird, legst Du eine zusätzliche Zeile an, und zwar unterhalb einer Kommentarzeile
(dort gibt es bereits eine Zeile für root)
Deine Zeile sieht so aus:
Code: Alles auswählen
openhab ALL=(ALL:ALL) NOPASSWD: /etc/openhab2/scripts/backup.sh
was letztlich bedeutet, dass der User openhab den Befehl /etc/openhab2/scripts/baskup.sh in allen Kontexten ausführen darf, ohne ein passwort eingeben zu müssen.
dient dazu, sich als User openhab anzumelden. der User openhab hat normalerweise nicht die Erlaubnis, sich anzumelden, damit kann dieser User auch keine Dummheiten machen (falls jemand es schafft, über jetty auszubrechen)
Wenn Du als User openhab angemeldet bist, kannst Du das backup-script aufrufen.
Wenn alles richtig funktioniert hat, kommt einmalig die Bemerkung, dass mit großer Macht große Verantwortung einhergeht (oder so ähnlich), was Du mit der <ENTER>-Taste bestätigst. Anschließend sollte umgehend Dein Script mit root-Rechten laufen.
Des weiteren habe ich noch nie ein echo gesendet, was muss ich tun ??
echo ist ein Befehl, den Du in Dein Script einbauen kannst, um Textausgaben zu erzeugen.
Code: Alles auswählen
echo `date` Backup wird gestartet >> /var/log/backup.log
erzeugt z.B. in der Datei /var/log/backup.log eine Zeile, die so aussieht:
Voraussetzung ist dabei, dass die Datei bereits existiert und der user openhab mindestens Schreibrechte hat (weil /var/log/ root gehört). Das kannst Du erreichen, indem Du diesen Code zeile für Zeile ausführst:
Code: Alles auswählen
sudo touch /var/log/backup.log
sudo chmod 644 /var/log/backup.log
sudo chown openhab: /var/log/backup.log
Dies erzeugt die Datei, setzt Leserechte für alle und ändert den Besitzer der Datei in openhab, damit hat nur der User openhab Schreibrechte. Wenn Du dann das echo in Deinem Script oberhalb des eigentlichen Befehls einbaust und danach noch eine weitere Zeile mit echo, die auf das Ende hinweist, kannst Du in der log-Datei nachschauen, ob das Script gearbeitet hat.
und letztlich wie sehen deiner Meinung nach meine Things, Items und Sidemap-Einträge aus ??
Auf die hatte ich mich noch nicht gestürzt.
Code: Alles auswählen
Thing exec:command:Backup [ cmmand="<./backup.sh> %2$s", interval=0,autorun=false ]
Da sind schon einige Fehler drin. Es muss eher so aussehen (neuer Speicherort schon berücksichtigt)
Code: Alles auswählen
Thing exec:command:Backup [ command="backup.sh", autorun=false ]
Eventuell musst Du, wie erwähnt, den kompletten Pfad angeben, dann sieht's so aus:
Code: Alles auswählen
Thing exec:command:Backup [ command="/etc/openhab2/scripts/backup.sh", autorun=false ]
Da das Script keinen Parameter erwartet, müssen wir auch keinen übergeben

Der Rest sieht erstmal gut aus.