51 lines
1.4 KiB
Bash
Executable File
51 lines
1.4 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
MY_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
source "$MY_DIR/config.sh"
|
|
|
|
DAY=$(date +%Y-%m-%d)
|
|
MISSING_BACKUPS=()
|
|
N_CHECKED=0
|
|
N_PRESENT=0
|
|
N_FILES=0
|
|
|
|
mapfile -t ZONES < <(yq -c -r '.devices | keys[]' "$DEV_FILE")
|
|
for ZONE in "${ZONES[@]}"; do
|
|
ZONE_JQ=$(yq -c ".devices.$ZONE" "$DEV_FILE")
|
|
mapfile -t NAMES < <(yq -c -r 'keys[]' <<< "$ZONE_JQ")
|
|
for NAME in "${NAMES[@]}"; do
|
|
DEVICE_PATH="$BACKUP_PATH/$ZONE/$NAME"
|
|
MISSING="true"
|
|
|
|
if [ -d "$DEVICE_PATH" ]; then
|
|
DEVICE_N_FILES=$(find "$DEVICE_PATH" -name "${NAME}_${DAY}_*" ! -name "*.log" | wc -l)
|
|
N_FILES=$((N_FILES+DEVICE_N_FILES))
|
|
|
|
if [ "$DEVICE_N_FILES" -ge "1" ]; then
|
|
MISSING="false"
|
|
fi
|
|
fi
|
|
|
|
if [ "$MISSING" = "true" ]; then
|
|
MISSING_BACKUPS+=("$ZONE.$NAME")
|
|
else
|
|
N_PRESENT=$((N_PRESENT+1))
|
|
fi
|
|
|
|
N_CHECKED=$((N_CHECKED+1))
|
|
done
|
|
done
|
|
|
|
N_MISSING=${#MISSING_BACKUPS[@]}
|
|
PERF_DATA="day=$DAY backup_path='$BACKUP_PATH' checked=$N_CHECKED present=$N_PRESENT present_files=$N_FILES"
|
|
|
|
if [ "$N_MISSING" -gt "0" ]; then
|
|
CRITICAL_DATA="missing=$N_MISSING missing_backups='${MISSING_BACKUPS[@]}'"
|
|
echo "CRITICAL - $N_MISSING missing of $N_CHECKED backups | $PERF_DATA $CRITICAL_DATA"
|
|
exit 2
|
|
else
|
|
echo "OK - All $N_CHECKED backups present | $PERF_DATA"
|
|
exit 0
|
|
fi
|