Ich habe jetzt erst das Script etwas näher angeschaut
Aber der Reihe nach...
bash ist die verwendete Shell (die Eingabeaufforderung, bzw. das Programm, welches sich darum kümmert, das aufgerufene Programm auszuführen)Florian.Reinartz hat geschrieben: ↑6. Jul 2022 00:10 Was bedeutet /bin/bash beim Aufruf bzw. #!/bin/bash innerhalb des Scripts.
Es gibt verschiedene Shells, jede hat bestimmte Funktionen, die sie von anderen Shells abheben. bash und sh sind dabei vermutlich die bekanntesten. Man kann explizit angeben, welche Shell zum Ausführen verwendet werden soll (/bin/ ist das Verzeichnis, in dem bash liegt).
Außerdem wird gewöhnlich in der ersten Zeile eines Scripts angegeben, welches Programm verwendet werden soll, um das Script auszuführen. Dieser Eintrag wird mit #! eingeleitet. #!/usr/bin/python wäre z.B. auch ein typischer Eintrag, der zu Beginn eines Python Scripts steht.
Die Dateiendung .sh oder auch .py dient lediglich der Kennzeichnung innerhalb des Dateisystems, hat aber keine Auswirkungen darauf, wie die Datei verarbeitet wird (im Gegensatz zu Windows, welches sich über die Dateiendung auch verwirren lässt...)
Wenn #!/bin/bash im Script steht, sollte es nicht nötig sein, /bin/bash beim Aufruf des Scripts mit anzugeben.
Es kann viele verschiedene Gründe dafür geben. Die Frage ist aber: Bist Du sicher, dass das Script nicht gestartet wird? Oder ist es nicht vielmehr so, dass lediglich die enthaltenen Befehle nicht ausgeführt werden? Prüfen könntest Du das, indem Du zu Beginn des aufgerufenen Scripts eine Ausgabe in eine Datei schreiben lässt (diese Datei sollte in einem Ordner liegen, der für alle schreibbar ist, die Datei sollte außerdem evtl. schon existieren und ebenfalls für alle beschreibbar sein, mindestens 666 oder rw-rw-rw- als Rechte...
Wem gehört die Datei /etc/openhab/scripts/Backup.sh? Wie sind die Dateirechte des Scripts gesetzt? das Script stellt eine Verbindung zu einem entfernten Laufwerk her, mittels mount. mount ist ein Befehl, der nur von root ausgeführt werden darf (also außer zur reinen Anzeige der aktuellen natürlich...). Spätestens wenn dieser Befehl aufgerufen wird, wird das Script also fehlende Rechte monieren. Ein Ausweg kann sein, sudo mit anzugeben, allerdings wird sudo ein Passwort verlangen, wenn man dies nicht umkonfiguriert. Es ist aber keine gute Idee, einfach ein NOPASSWD für den User openhab zu setzen, vielmehr sollten alle Befehle, welche der User openhab mit erweiterten rechten ausführen können soll explizit aufgelistet werden. Dies geschieht über die Datei /etc/sudoers. ACHTUNG!!! Diese Datei sollte keinesfalls direkt bearbeitet werden, sondern mit dem Befehl visudo (der nur mit erweiterten Rechten ausgeführt werden kann). visudo prüft vor dem Speichern die Datei auf Fehler, so dass sichergestellt ist, dass sudo auch nach der Konfiguration noch korrekt funktioniert. Ansonsten kann man sich nachhaltig aus dem System aussperren, falls man keinen direkten Zugriff auf den User root hat.
Das deutet darauf hin, dass hier Rechte fehlen, siehe voriger Punkt.Florian.Reinartz hat geschrieben: ↑6. Jul 2022 00:10 lösche ich den Inhalt des Skriptes "backup.sh" und schreibe den Inhalt eines anderesn Skriptes rein [...] wird es ausgeführt.
Das ist der User, unter dem openHAB ausgeführt wird, gewöhnlich ist das der User openhab. Dieser User kann sich nicht am System anmelden, er hat kein Passwort und keine default Shell. Dies dient der Sicherheit. Natürlich gibt es Möglichkeiten, sich dennoch als User openhab am System anzumeldenFlorian.Reinartz hat geschrieben: ↑6. Jul 2022 00:10 Wenn openHAB ein Skript ausführt, wer ist denn dann der ausführende user?
Das war mir schon ein paar Zeilen vorher aufgefallen... Was nun? Backup.sh oder backup.sh? Unter Linux sind das zwei verschiedene Dateien!Florian.Reinartz hat geschrieben: ↑6. Jul 2022 00:10 Beim Anlegen der backup.sh soll man nach dem erstellen der Datei die Datei "ausführbar" machen:Code: Alles auswählen
sudo chmod 755 /etc/openhab/scripts/Backup.sh
Die Dateirechte als Zahlen: erste Stelle steht für den Besitzer, zweite Stelle für die Gruppe, dritte Stelle für alle anderen. Die Datei gehört immer einem bestimmten User und einer bestimmten Gruppe. Ist man dieser User, so gilt die erste Ziffer. Gehört man der Gruppe an, gilt die zweite Ziffer. Trifft weder das eine noch das andere zu, so gilt die dritte Ziffer. Die Ziffer ist binär zu betrachten, also z.B. 7->111 oder 2->010 usw. Dabei steht das MSB für Lesen, das LSB für Ausführen und das mittlere Bit für Schreiben. 755 bedeutet also, jeder darf die Datei lesen und ausführen, aber nur der Besitzer darf die Datei auch beschreiben, also ändern. 755 ist also für Scripte immer ausreichend.
Genau das ist der Punkt. Rückmeldung 1 -> Fehler, weil openhab weder Mitglied der Gruppe sudo ist noch anderweitig erweiterte rechte erhalten hat. 32 -> Fehler, vermutlich, weil versucht wurde, einen Befehl auszuführen, der nur mit root Rechten ausgeführt werden darf. 32 ist aber kein reservierter Exit Code, da müsste man also stöbern, um unter allen verwendeten Programmen dasjenige zu fingen, welches die 32 exponiert. Aber mount ist ein heißer Kandidat...Florian.Reinartz hat geschrieben: ↑6. Jul 2022 00:10 4.
beinhaltet backups.sh den mount Befehl mit sudo [...]