-
Notifications
You must be signed in to change notification settings - Fork 0
/
call-bareos.sh
104 lines (87 loc) · 4.46 KB
/
call-bareos.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#!/bin/bash
################################################################################
# this script calls another script per ssh to start a bareos-job.
#
# Copyright (C) 2014 Michael Oehme <m.m.oehme@gmail.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.#
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
################################################################################
################################################################################
# Dieses Script wertet keine Kommandozeilenparamter aus, da dies dem Sinn dieses
# Scripts widersprechen würde.
# Statt dessen sollten nachfolgend alle notwendigen Einstellungen vorgenommen
# werden.
################################################################################
# PARAMETER
## INTERFACE: Wenn der Start des Backups ausschließlich erfolgen soll, wenn
## ein bestimmtes Netzwerkinterface aktiviert wurde.
## Z.B. kann so verhindert werden, dass ein Backup über das WLAN
## läuft. Dieser Parameter macht aber nur Sinn, wenn dieses Script
## aus /etc/networ/if-up.d aufgerufen wird. In diesem Fall wird
## im Environment die Variable IFACE gesetzt. Diese wir dann mit
## INTERFACE verglichen. Sind diese unterschiedlich wird das Script
## beendet.
## HINWEIS: Die entsprechende Funktion ist per Default auskommentiert,
## da sonst Probleme beim Aufruf per cron.daily drohen. HIer wird
## IFACE nicht gesetzt. Weshalb das Script immer abbrechen würde.
#INTERFACE="eth0"
## BAREOSSERVER: Hostname oder IP-Adresse des Bareosservers
BAREOSSERVER="CHANGEME_BAREOSSERVER"
## BAREOSREMOTESCRIPT; Wie heißt das Script auf dem Server?
## Dieses muss den Parameter start und einen Bareosjob als
## Parameter akzeptieren.
BAREOSREMOTESCRIPT="/etc/bareos/bareos-remote.sh"
## BAREOSJO: Name des Jobs welcher auf dem Bareosserver gestartet werden soll
BAREOSJOB="JOB_TO_RUN"
## LASTRUNFILE: Datei deren ZEitstempel den letzten Programmaufruf speichert.
LASTRUNFILE="/var/lib/bareos/lastrun"
## Wurde das richtige INTERFACE aktiv? -> Wenn nicht, dann ENDE
## Diese Funktion ist per Defaul auskommentiert. Erklärung siehe Parameter INTERFACE.
#if [ "$IFACE" != "$INTERFACE" -o -z "$IFACE" ]; then
# /usr/bin/logger info "BAREOS: Nicht die richtige Netzwerkkarte aktiviert."
# exit 0
#fi
## IST der Server erreichbar? -> Wenn nicht, dann ENDE
if ! /bin/ping -c 1 $BAREOSSERVER > /dev/null
then
/usr/bin/logger info "BAREOS: Der Server ist nicht erreichbar."
exit 0
fi
## Liegt der letze Skriptaufruf länger als einen Tag zurück? Wenn nicht, dann ENDE
## Diese Abschnitt prüft, ob am Tag des Aufrufs bereits ein Backup gestartet wurde.
## Dazu kommt die Datei in LASTRUN zum Einsatz. Es wird geprüft ob die letzte
## Änderung der Datei mind. einen Tag vor Aufruf dieses Scripts erfolgt ist.
if [ $(find $LASTRUNFILE -mtime -1|wc -l) -gt 0 ];
then
/usr/bin/logger info "BAREOS: Backup heute bereits gelaufen."
exit 0
fi
################################################################################
# Gut.
# Da wir bis hierher gekommen sind, sollte das Backup nun auch gestartet werden.
if ssh $BAREOSSERVER -C "$BAREOSREMOTESCRIPT start $BAREOSJOB"
then
## Wenn dabei alles glatt geht wird ein Eintrag ins Log geschrieben, ...
/usr/bin/logger info "BAREOS: Backup wurde in die Warteschlange aufgenommen."
## ... der Zeitstempel des LASTRUNFILE angepasst
## (Das Datum wird dabei auf 00:00 des aktuellen Tages gesetzt) ...
touch -t `date +%m%d0000` $LASTRUNFILE
## und das Script mit dem Exitcode 0 (kein Fehler) beendet.
exit 0
fi
## Sollte das Script bis hier kommen, dann ist irgend etwas in die Hose gegangen.
## Dementsprechen erfolgt ein Eintrag im Log ..
/usr/bin/logger info "BAREOS: Backup konnte nicht in die Warteschlange aufgenommen werden."
## --- und das Script wird mit dem Exitcode 1 (Fehler) beendet.
exit 1