File: //bigscoots/wpo/backups/search.sh
#!/bin/bash
HOSTNAME="$1"
DEBUG=false
# Allow optional --debug flag
if [[ "$2" == "--debug" ]]; then
DEBUG=true
fi
MYSQL_DB="vps_monitor"
MYSQL_TABLE="containers"
SSH_PORT=2222
SSH_OPTIONS=(-p "$SSH_PORT" -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o PasswordAuthentication=no -o BatchMode=yes -q)
BACKUP_NODES=(backup1 backup2 backup3 backup4 backup5 backup6 backup7 backup8 backup9 backup10 backup11 backup12 backup13 backup14 backup15 backup16 backup17 backup18 backup19 backup20)
log() {
[[ "$DEBUG" == true ]] && echo -e "$1"
}
# Validate input
if [[ -z "$HOSTNAME" ]]; then
[[ "$DEBUG" == true ]] && echo "Usage: $0 <hostname> [--debug]"
exit 1
fi
# Get VEID
VEID=$(mysql -D"$MYSQL_DB" -N -se "SELECT veid FROM $MYSQL_TABLE WHERE hostname = '$HOSTNAME' LIMIT 1;")
if [[ -z "$VEID" ]]; then
echo "{\"error\": \"VEID not found for hostname: $HOSTNAME\"}"
exit 0
fi
WPO_USER="wpo$VEID"
log "🔍 Found VEID=$VEID for hostname=$HOSTNAME"
log "🗄️ Checking backup servers for available backups..."
RESULT="{\"veid\":\"$VEID\",\"hostname\":\"$HOSTNAME\",\"matches\":["
FOUND=false
for NODE in "${BACKUP_NODES[@]}"; do
OUT=$(ssh "${SSH_OPTIONS[@]}" "$NODE" "if [ -d /home/wpo_users/$WPO_USER ]; then
cd /home/wpo_users/$WPO_USER
BACKUPS=(\$(ls -1d back-* 2>/dev/null | sed 's/back-//' | cut -d'T' -f1))
if [ -d current ]; then
DOMAINS=(\$(ls -1 current | grep -v '^conf.d\$' | grep -v '^wpincludes\$'))
else
DOMAINS=()
fi
printf \"__FOUND__\\n\"
printf \"BACKUPS:\${BACKUPS[*]}\\n\"
printf \"DOMAINS:\${DOMAINS[*]}\\n\"
fi" 2>/dev/null)
if echo "$OUT" | grep -q "__FOUND__"; then
FOUND=true
BACKUPS_RAW=$(echo "$OUT" | grep "BACKUPS:" | cut -d':' -f2-)
DOMAINS_RAW=$(echo "$OUT" | grep "DOMAINS:" | cut -d':' -f2-)
BACKUPS_ARRAY=$(jq -n --arg data "$BACKUPS_RAW" '$data | split(" ")')
DOMAINS_ARRAY=$(jq -n --arg data "$DOMAINS_RAW" '$data | split(" ")')
RESULT+="{\"node\":\"$NODE\",\"backups\":$BACKUPS_ARRAY,\"domains\":$DOMAINS_ARRAY},"
fi
done
RESULT=${RESULT%,} # Trim trailing comma
RESULT+="]}"
if [[ "$FOUND" == false ]]; then
echo "{\"veid\":\"$VEID\",\"hostname\":\"$HOSTNAME\",\"matches\":[]}"
else
echo "$RESULT" | jq .
fi