Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
-
pcace
- Beiträge: 231
- Registriert: 28.08.2011 01:08:55
Beitrag
von pcace » 27.05.2023 08:33:23
Hi,
ich möchte hier ein shell script per cronjob ausführen. das ist der crontab eintrag:
@daily /bin/bash /opt/scripts/hugobackup.sh
das ist das Script:
Code: Alles auswählen
#!/bin/bash
# FTP Share Informationen
export SMB_SERVER="192.168.1.1"
export SMB_USER="user"
export SMB_PASS="pass"
export SMB_PATH="/Hugo/"
# Mountpunkt für SMB Share
export SMB_MOUNT="/mnt/hugo_backup"
# Borg Backup Repository Informationen
export REPO_USER="user"
export REPO_HOST="storage.de"
export REPO_PORT="23"
export REPO_PATH="/hugo_backup"
export BORG_PASSPHRASE="secure"
# unmount before trying to mount
umount $SMB_MOUNT
# Mounten des FTP Shares
# curlftpfs -o user=$FTP_USER:$FTP_PASS $FTP_SERVER $SMB_MOUNT
mount -t cifs //192.168.1.1/Hugo $SMB_MOUNT -o user=$SMB_USER,pass=$SMB_PASS,dom=domain,noserverino
REPO_NAME=$(date +"%m_%d_%Y_%M_%S")
# Backup mit Borg erstellen
borg create --verbose --progress --stats --list \
--files-cache=ctime,size \
ssh://$REPO_USER@$REPO_HOST:$REPO_PORT/.$REPO_PATH::$REPO_NAME \
$SMB_MOUNT/hugoData/Hugo/
# Entfernen von Backups, die älter als 7 Tage sind
borg prune --list ssh://$REPO_USER@$REPO_HOST:$REPO_PORT/.$REPO_PATH \
--keep-daily=7 \
--keep-weekly=4 \
--keep-monthly=12 \
--keep-yearly=-1
# Umount des FTP Shares
umount $SMB_MOUNT
leider wird das script nicht ausgeführt. Warum? Ich bekomme keine fehlermeldung whatsoever. Wenn ich das direkt ausführe funktionierts.
Wie bekomme ich den fehler eingegrenzt? Oder sieht vllt jemand direkt was das Problem ist?
Gruß und Dank!
-
Meillo
- Moderator
- Beiträge: 8813
- Registriert: 21.06.2005 14:55:06
- Wohnort: Balmora
-
Kontaktdaten:
Beitrag
von Meillo » 27.05.2023 08:49:13
Was genau heisst, dass es nicht ausgefuehrt wird? Erkennst du das daran, dass der Borg-Befehl nicht gelaufen ist, oder pruefst du tatsaechlich, dass das Script nicht aufgerufen wird?
Fuege mal z.B. sowas am Scriptbeginn ein, dann siehst du, ob es aufgerufen wird:
Du kannst auch `set -x' aktivieren, dann solltest du den Aufruf aller Befehle per Email bekommen.
Verwende statt `@daily' z.B. `@hourly', dann musst du nicht so lange warten.
Use ed once in a while!
-
pcace
- Beiträge: 231
- Registriert: 28.08.2011 01:08:55
Beitrag
von pcace » 27.05.2023 08:57:50
Hi, hab den crontab mal 8:55 ausführen lassen (also grad eben) mit "date >/tmp/test"
und siehe da es existiert.. :/
also scheint das Problem irgendwo im script zu liegen.
wie meinst du das mit dem set-x? ich habe keinen mail dienst /client installiert und konfiguriert:
Gruß
-
mat6937
- Beiträge: 2949
- Registriert: 09.12.2014 10:44:00
Beitrag
von mat6937 » 27.05.2023 08:58:05
pcace hat geschrieben: 27.05.2023 08:33:23
Warum? ... Wenn ich das direkt ausführe funktionierts.
Meistens liegt es an der PATH-Variable. Versuch mal mit absoluten Pfaden, im Script.
-
Meillo
- Moderator
- Beiträge: 8813
- Registriert: 21.06.2005 14:55:06
- Wohnort: Balmora
-
Kontaktdaten:
Beitrag
von Meillo » 27.05.2023 09:40:48
pcace hat geschrieben: 27.05.2023 08:57:50
Hi, hab den crontab mal 8:55 ausführen lassen (also grad eben) mit "date >/tmp/test"
und siehe da es existiert.. :/
Also wird das Script ausgefuehrt. Das ist ein gutes Zeichen.
pcace hat geschrieben: 27.05.2023 08:57:50
ich habe keinen mail dienst /client installiert und konfiguriert:
Ein lokaler MTA (der nur lokal Mails zustellt) wuerde schon Sinn machen, dann bekommst du auch ensprechende Fehlermeldungen:
Code: Alles auswählen
From: root (Cron Daemon)
To: meillo
Subject: Cron <meillo@quagga> /bin/sh /tmp/a
/tmp/a: 3: /tmp/a: foobar: not found
Vielleicht reicht es auch schon wenn du `mailx-heirloom' installierst, um die Mails zugestellt zu bekommen und lesen zu koennen. Oder schaue mal, ob es die Datei /var/mail/pcace gibt.
Die Loesung des konkreten Problems liegt vermutlich, wie mat6937 schreibt, in einer absoluten Pfadangabe fuer `borg'.
Use ed once in a while!
-
tobo
- Beiträge: 1989
- Registriert: 10.12.2008 10:51:41
Beitrag
von tobo » 27.05.2023 09:46:53
borg liegt wohl unter /usr/bin. Die "%" im date (anstatt \%) werden aber so ganz sicher nicht funktionieren.
-
Meillo
- Moderator
- Beiträge: 8813
- Registriert: 21.06.2005 14:55:06
- Wohnort: Balmora
-
Kontaktdaten:
Beitrag
von Meillo » 27.05.2023 10:09:48
tobo hat geschrieben: 27.05.2023 09:46:53
Die "%" im date (anstatt \%) werden aber so ganz sicher nicht funktionieren.
Welche meinst du? Ich sehe nur welche im Script, wo es kein Problem ist, und keine im Crontab-Eintrag, wo sie speziell interpretiert werden wuerden. Aber vielleicht uebersehe ich auch etwas.
Use ed once in a while!
-
JTH
- Moderator
- Beiträge: 3023
- Registriert: 13.08.2008 17:01:41
- Wohnort: Berlin
Beitrag
von JTH » 27.05.2023 11:11:27
Auch im Skript müssen sie, meine ich, speziell behandelt – escaped – werden, wie tobo schreibt:
man crontab.5 hat geschrieben:
The ``sixth'' field (the rest of the line) specifies the command to be run. The entire command portion of the line, up to a newline or % character, will be executed by /bin/sh or by the shell specified in the SHELL variable of the crontab file. Percent-signs (%) in the command, unless escaped with backslash (\), will be changed into newline characters, and all data after the first % will be sent to the command as standard input.
Manchmal bekannt als Just (another) Terminal Hacker.
-
Meillo
- Moderator
- Beiträge: 8813
- Registriert: 21.06.2005 14:55:06
- Wohnort: Balmora
-
Kontaktdaten:
Beitrag
von Meillo » 27.05.2023 11:19:53
JTH hat geschrieben: 27.05.2023 11:11:27
Auch im Skript müssen sie, meine ich, speziell behandelt – escaped – werden, wie tobo schreibt:
man crontab.5 hat geschrieben:
The ``sixth'' field (the rest of the line) specifies the command to be run. The entire command portion of the line, up to a newline or % character, will be executed by /bin/sh or by the shell specified in the SHELL variable of the crontab file. Percent-signs (%) in the command, unless escaped with backslash (\), will be changed into newline characters, and all data after the first % will be sent to the command as standard input.
Im Script sicher nicht. Das wuerde doch keinen Sinn machen. Dann muesste man ja jedes Script ueberarbeiten, wenn man es per Cron einbinden will.
Das Prozentzeichen ist nur im Befehl in der Crontab speziell. Der Hintergrund dieser Eigenart ist, dass man damit `mail' praktisch nutzen kann, wie in den Beispielen in der Manpage zu sehen:
Code: Alles auswählen
# run at 10 pm on weekdays, annoy Joe
0 22 * * 1-5 mail -s "It's 10pm" joe%Joe,%%Where are your kids?%
Use ed once in a while!
-
JTH
- Moderator
- Beiträge: 3023
- Registriert: 13.08.2008 17:01:41
- Wohnort: Berlin
Beitrag
von JTH » 27.05.2023 13:09:04
Meillo hat geschrieben: 27.05.2023 11:19:53
Im Script sicher nicht. Das wuerde doch keinen Sinn machen. Dann muesste man ja jedes Script ueberarbeiten, wenn man es per Cron einbinden will.
Öhm, völlig richtig. Hätte wohl genauer lesen sollen
Manchmal bekannt als Just (another) Terminal Hacker.
-
tobo
- Beiträge: 1989
- Registriert: 10.12.2008 10:51:41
Beitrag
von tobo » 27.05.2023 15:00:17
Ihr habt da schon recht - da hat voll die Fehlerassoziation cron-date-% bei mir durchgeschlagen...
-
pcace
- Beiträge: 231
- Registriert: 28.08.2011 01:08:55
Beitrag
von pcace » 27.05.2023 19:53:56
Leider immernoch nicth so recht. ich hab jetzt mal die Pfade angepasst:
und dann das ins script gepackt. keine besserung. ich versuch mal einen lokalen mta zu installieren. eigentlich wollte ich das system so schlank wie möglich halten. Aber gut... so ists jetzt eben
-
mat6937
- Beiträge: 2949
- Registriert: 09.12.2014 10:44:00
Beitrag
von mat6937 » 27.05.2023 22:54:18
pcace hat geschrieben: 27.05.2023 19:53:56
Leider immernoch nicth so recht. ich hab jetzt mal
die Pfade angepasst:
und dann das ins script gepackt. keine besserung.
"Die" Pfade oder _alle_ Pfade angepasst/benutzt? Weißt Du was mit _absolute_ Pfade benutzen, gemeint ist?
-
Meillo
- Moderator
- Beiträge: 8813
- Registriert: 21.06.2005 14:55:06
- Wohnort: Balmora
-
Kontaktdaten:
Beitrag
von Meillo » 28.05.2023 09:41:28
pcace hat geschrieben: 27.05.2023 19:53:56
keine besserung. ich versuch mal einen lokalen mta zu installieren. eigentlich wollte ich das system so schlank wie möglich halten. Aber gut... so ists jetzt eben
So wie ich die Manpage crontab(5) verstehe, reicht es auch aus, wenn du ein /bin/mail hast, also z.B. indem du
mailx-heirloom installierst. Dann brauchst du keinen ganzen MTA.
Falls du nur wegen absoluten Pfaden testen willst, dann kannst du das Script auch einfach manuell als User mit einem minimalen PATH aufrufen, z.B. so:
Oder noch extremer so:
Use ed once in a while!