carnap64
Anmeldungsdatum: 1. Dezember 2021
Beiträge: 110
|
Hallo Forum, ich habe mein erstes simples Bashskript dbackup.sh geschrieben. Zuerst habe ich aber den Benutzer max für den Aufruf von rsnapshot konfiguriert, sodass er nicht mehr das Passwort eingeben muss: max ALL=(ALL) NOPASSWD: /usr/bin/rsnapshot
Dann habe ich das Skript im Heimatverzeichnis abgelegt. das Skript: | #! /bin/bash
# Bei jedem Befehl warten, bis er ohne Fehler abgearbeitet ist; erst danach neuen Befehl ausführen:
set -e
# Ruft rsnapshot mit der Angabe des Backup-Intervalls beta auf:
rsnapshot beta
# Kopiert die Logdatei in das Verzeichnis Logs auf dem QNAP-NAS:
cp /home/max/rsnapshot_logs/.log /home/max/Public/Daten/Logs/rsnapshot/$(date +%Y-%m-%d--%H-%M)-backup.txt
|
Das Skript habe ich mit chmod +x dbackup.sh ausführbar gemacht und danach mit sudo mv $HOME/dbackup.sh /usr/local/bin verschoben. Nun sollte es ja ohne Weiteres aufgerufen werden können.
rsnapshot ist natürlich installiert. Wenn ich dbackup.sh im Terminal eingebe, wird folgender Fehler ausgegeben: | -bash: /usr/local/bin/dbackup.sh: kann nicht ausführen: benötigte Datei nicht gefunden
max@antec:~$
|
Was habe ich übersehen?
|
schwarzheit
Supporter
Anmeldungsdatum: 31. Dezember 2007
Beiträge: 5010
|
Kann es sein das das Verschieben schief gegangen ist? Ich glaube da ist einiges nicht richtig. Prüfe es z.B. im Dateibrowser. Sollte da wirklich was schief gegangen sein versuch es so sudo mv ~/dbackup.sh /usr/local/bin/
|
carnap64
(Themenstarter)
Anmeldungsdatum: 1. Dezember 2021
Beiträge: 110
|
Die Datei ist dort. Ich habe mit dem Gnome Dateiexplorer (keine Ahnung, wie das Programm wirklich heisst) nachgeschaut. Hier die Ausgabe des Terminals: | Last login: Tue Jul 23 21:17:03 2024 from 192.168.1.60
max@antec:~$ cd /usr/local/bin
max@antec:/usr/local/bin$ dir
dbackup.sh doublecopy.sh freefilesync FreeFileSync
max@antec:/usr/local/bin$
|
|
schwarzheit
Supporter
Anmeldungsdatum: 31. Dezember 2007
Beiträge: 5010
|
Gut. Dann vergiss was ich sagte. Dann müssen andere ran. 😉 Scripte sind nicht meins, ich kämpfe auch jedesmal damit. 😀
|
lubux
Anmeldungsdatum: 21. November 2012
Beiträge: 14384
|
carnap64 schrieb: Die Datei ist dort.
Wie ist die Ausgabe von:
bash -x /usr/local/bin/dbackup.sh
?
|
carnap64
(Themenstarter)
Anmeldungsdatum: 1. Dezember 2021
Beiträge: 110
|
Hier die Ausgabe: max@antec:/usr/local/bin$ bash -x /usr/local/bin/dbackup.sh
+ $'\r'
/usr/local/bin/dbackup.sh: Zeile 2: $'\r': Befehl nicht gefunden
+ set $'-e\r'
: Ungültige Option.kup.sh: Zeile 4: set: -
set: Aufruf: set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]
+ $'\r'
/usr/local/bin/dbackup.sh: Zeile 5: $'\r': Befehl nicht gefunden
+ $'\r'
/usr/local/bin/dbackup.sh: Zeile 8: $'\r': Befehl nicht gefunden
+ $'\r'
/usr/local/bin/dbackup.sh: Zeile 9: $'\r': Befehl nicht gefunden
+ $'\r'
/usr/local/bin/dbackup.sh: Zeile 12: $'\r': Befehl nicht gefunden
+ $'\r'
/usr/local/bin/dbackup.sh: Zeile 15: $'\r': Befehl nicht gefunden
+ rsnapshot $'beta\r'
Setting locale to POSIX "C"
echo 3414 > /var/run/rsnapshot.pid
----------------------------------------------------------------------------
rsnapshot encountered an error! The program was invoked with these options:
/usr/bin/rsnapshot beta
----------------------------------------------------------------------------
ERROR: Could not write lockfile /var/run/rsnapshot.pid: Permission denied
/usr/bin/logger -p user.err -t rsnapshot[3414] /usr/bin/rsnapshot beta : \
ERROR: Could not write lockfile /var/run/rsnapshot.pid
+ $'\r'
/usr/local/bin/dbackup.sh: Zeile 18: $'\r': Befehl nicht gefunden
++ date +%Y-%m-%d--%H-%M
+ cp /home/max/rsnapshot_logs/.log $'/home/max/Public/Daten/Logs/rsnapshot/2024- 07-23--21-56-backup.txt\r'
max@antec:/usr/local/bin$ Das sieht schlecht aus. Ich habe einen Verdacht: Ich hatte die Datei (das Skript) auf einem Windowsrechner geschrieben. Da ist ja etwas anders mit dem Zeilenumbruch als unter Linux. | $'\r': Befehl nicht gefunden
|
Ich werde wohl die Datei noch einmal unter Linux erstellen.
|
lubux
Anmeldungsdatum: 21. November 2012
Beiträge: 14384
|
carnap64 schrieb: Ich werde wohl die Datei noch einmal unter Linux erstellen.
Ja, mit z. B. nano oder gleichwertig (als Editor).
|
shiro
Supporter
Anmeldungsdatum: 20. Juli 2020
Beiträge: 1284
|
Ich werde wohl die Datei noch einmal unter Linux erstellen.
Das musst du nicht. Du kannst auch das CR (\r) Zeichen löschen mit dem "tr" Befehl:
tr -d '\r' /usr/local/bin/dbackup.sh >~/dbackup.sh
chmod 755 ~/dbackup.sh
# Test, ob es funktioniert:
~/dbackup.sh
# und wieder nach /usr/local/bin kopieren
sudo mv ~/dbackup.sh /usr/local/bin/
|
micneu
Anmeldungsdatum: 19. Januar 2021
Beiträge: 838
Wohnort: Hamburg
|
Moin, das was mir auf den ersten blick aufgefallen ist, die shebang ist nicht ganz richtig, da ist ein Leerzeichen was da nicht hingehört. Und unter Windoof kannst du auch scripte für Linux schreiben, meine Empfehlung entweder Notepad++ oder VisualStudio Code
|
carnap64
(Themenstarter)
Anmeldungsdatum: 1. Dezember 2021
Beiträge: 110
|
micneu schrieb: […] die shebang ist nicht ganz richtig, da ist ein Leerzeichen was da nicht hingehört.
Hi, das Leerzeichen sollte kein Problem sein: https://wiki.ubuntuusers.de/Shell/Bash-Skripting-Guide_f%C3%BCr_Anf%C3%A4nger/
Und unter Windoof kannst du auch scripte für Linux schreiben, meine Empfehlung entweder Notepad++ oder VisualStudio Code
Ich habe Notepad++ verwendet und als Sprache die Bash angegeben.
|
carnap64
(Themenstarter)
Anmeldungsdatum: 1. Dezember 2021
Beiträge: 110
|
@shiro: Das hat nicht ganz geklappt:
| Last login: Wed Jul 24 11:43:11 2024 from 192.168.1.60
max@antec:~$ tr -d '\r' /usr/local/bin/dbackup.sh >~/dbackup.s~
tr: zusätzlicher Operand »/usr/local/bin/dbackup.sh“
Beim Löschen ohne Verdichten darf nur eine Zeichenkette angegeben werden.
„tr --help“ liefert weitere Informationen.
max@antec:~$
|
Ich habe nun die Datei des Skripts in Linux neu erstellt. Die genannten Fehlermeldungen werden nicht mehr angezeigt.
Jetzt bekomme ich aber folgende Meldung:
Last login: Wed Jul 24 11:41:11 2024 from 192.168.1.9
max@antec:~$ gtrbackup.sh
Setting locale to POSIX "C"
echo 7780 > /var/run/rsnapshot.pid
----------------------------------------------------------------------------
rsnapshot encountered an error! The program was invoked with these options:
/usr/bin/rsnapshot beta
----------------------------------------------------------------------------
ERROR: Could not write lockfile /var/run/rsnapshot.pid: Permission denied
/usr/bin/logger -p user.err -t rsnapshot[7780] /usr/bin/rsnapshot beta: \
ERROR: Could not write lockfile /var/run/rsnapshot.pid
max@antec:~$ Weshalb hat der Benutzer nicht das Recht, in /var/run/ zu schreiben? Wie in meinem Eingangsposting habe ich den Benutzer max dazu berechtigt? Zumindest denke ich mir das ...
|
lubux
Anmeldungsdatum: 21. November 2012
Beiträge: 14384
|
carnap64 schrieb: Weshalb hat der Benutzer nicht das Recht, in /var/run/ zu schreiben? Wie in meinem Eingangsposting habe ich den Benutzer max dazu berechtigt? Zumindest denke ich mir das ...
Kannst Du als Benutzer max, in der Kommandozeile:
touch /var/run/test12342.txt
rm /var/run/test12342.txt
ausführen?
|
fleet_street
Top-Wikiautor
Anmeldungsdatum: 30. August 2016
Beiträge: 2400
Wohnort: Hunsrück (dunkle Seite)
|
carnap64 schrieb: max ALL=(ALL) NOPASSWD: /usr/bin/rsnapshot
Das ist wohl der Auszug aus deiner sudoers.d Konfigurationsdatei. Dann musst du aber im Skript trotzdem mitteilen, dass du ein Programm nicht als normaler Benutzer, sondern als sudo ausführen möchtest. Woher soll es dass sonst wissen?
…
# Ruft rsnapshot mit der Angabe des Backup-Intervalls beta auf:
sudo rsnapshot beta
…
|
carnap64
(Themenstarter)
Anmeldungsdatum: 1. Dezember 2021
Beiträge: 110
|
fleet_street schrieb:
Das ist wohl der Auszug aus deiner sudoers.d Konfigurationsdatei.
Nein, das ist der Auszug aus der Datei sudo.conf. Dann musst du aber im Skript trotzdem mitteilen, dass du ein Programm nicht als normaler Benutzer, sondern als sudo ausführen möchtest. Woher soll es dass sonst wissen?
OK, das hatte ich nicht verstanden gehabt. - Danke!
|
fleet_street
Top-Wikiautor
Anmeldungsdatum: 30. August 2016
Beiträge: 2400
Wohnort: Hunsrück (dunkle Seite)
|
carnap64 schrieb: Nein, das ist der Auszug aus der Datei sudo.conf.
Ah(?). Da bin ich mal gespannt, ob das wirkt. Das wäre mir neu, was andererseits nichts heißen mag. man sudo.conf
sagt mir jedenfalls was anderes:
Non-comment lines that don't begin with Plugin, Path, Debug, or Set are
silently ignored.
OK, das hatte ich nicht verstanden gehabt. - Danke!
Bitte. Da mussten wir alle mal durch.
|