GNU nano 5.4 /usr/local/bin/vzdump-hook-script *
#!/bin/bash
# script um den Backupserver zu starten wenn ein Backup ansteht. Danach wieder Ausschalten
# dieses Hook-Skript zum Backup-Auftrag hinzufügen: nano /etc/pve/jobs.cfg
# by AME 05/2023
#----------------------- Variablen --------------------------------------------------------------------------------#
PATH=/usr/sbin:${PATH}
# SET-X damit die Ausfuehrung protokolliert wird
# set -x
storeid=BackupServer # Variable - um welches storage handelt es sich
mac="aa:bb:cc:dd:ee:ff" # MAC Adresse des PBS-Servers
host="192.168.xxx.xxx" # Hostname oder IP des PBS-Servers
nic=eno1 # Netzwerk-Karte über die WOL läuft
#----------------------- Programmablauf ---------------------------------------------------------------------------#
if [ "$1" == "job-init" ]; then # wenn ein backup job rein kommt dann
pvesm set $storeid --disable 0 # der Storage wir enabled
etherwake -i $nic $mac # starte den Backup-server
sleep 10s
# ping $host -c 3 < /dev/null &
until [ "$act" == "true" ] # arbeite die loop-schleife ab bis die variable "ack" wahr ist
do
com=$(pvesm status --storage $storeid | tail -1); # Abfrage über den Status des Storage
[[ "$com" =~ ($storeid+ +)(pbs+ +)(active|inactive) ]];
if [ "${BASH_REMATCH[3]}" == "active" ]; then # der server ist erreichbar also aktiv?
echo "Backup-Server ist erreichbar"
act=true # variable "act" wirt wahr um aus dem loop raus zukommen
sleep 6s
exit 0
else
((c=c+1)) # counter
fi
if [ $c == 180 ]; then # wenn der server nach 180 sec. nicht erreichbar ist exit 1 e>
echo "ERROR Backup-Server ist nicht erreich bar"
sleep 2s
exit 1
fi
sleep 1s
done
fi
if [ "$1" == "job-end" ]; then # Wenn der Backup Job erledigt ist dann
echo "Backup erledigt, warte 20 Sekunden dann wird der Backup-Server gestoppt"
sleep 20s
pvesm set $storeid --disable 1 # der Storage wir disabled, sonst ist er nicht erreichbar und>
ssh root@$host -p 22 "poweroff < /dev/null &" # der Backupserver wird heruntergefahren
fi
exit 0