50 lines
1.6 KiB
Bash
Executable File
50 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
# home-router-backup.sh — Backup CCR config via WireGuard tunnel
|
|
# Uses the wg-itpp tunnel to reach the router at 10.77.0.2
|
|
|
|
DATE=$(date +%Y-%m-%d)
|
|
LOG="$HOME/.hermes/scripts/logs/home-router-backup-$DATE.log"
|
|
BACKUP_DIR="/tmp/home-router-backup"
|
|
SSH_KEY="$HOME/.ssh/wisp_rsa"
|
|
ROUTER="admin@10.77.0.2"
|
|
|
|
mkdir -p "$BACKUP_DIR" "$(dirname "$LOG")"
|
|
|
|
echo "=== Home Router Backup $(date -u '+%Y-%m-%d %H:%M:%S UTC') ===" >> "$LOG"
|
|
|
|
# Check tunnel is up
|
|
ping -c 1 -W 3 10.77.0.2 > /dev/null 2>&1
|
|
if [ $? -ne 0 ]; then
|
|
echo "FAILED: WireGuard tunnel down (10.77.0.2 unreachable)" >> "$LOG"
|
|
echo "Home Router Backup FAILED — tunnel down"
|
|
exit 1
|
|
fi
|
|
|
|
# Export config
|
|
ssh -i "$SSH_KEY" -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \
|
|
"$ROUTER" "/export terse file=itpp-backup-$DATE" >> "$LOG" 2>&1
|
|
|
|
# Download the export
|
|
scp -i "$SSH_KEY" -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \
|
|
"$ROUTER:itpp-backup-$DATE.rsc" "$BACKUP_DIR/" >> "$LOG" 2>&1
|
|
|
|
# Clean up remote file
|
|
ssh -i "$SSH_KEY" -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \
|
|
"$ROUTER" "/file remove itpp-backup-$DATE.rsc" >> "$LOG" 2>&1
|
|
|
|
# Upload to S3
|
|
source /opt/awscli-venv/bin/activate 2>/dev/null
|
|
aws s3 cp "$BACKUP_DIR/itpp-backup-$DATE.rsc" \
|
|
"s3://itpropartner-backups/home-router/$DATE-config.rsc" \
|
|
--endpoint-url https://s3.us-east-1.wasabisys.com >> "$LOG" 2>&1
|
|
|
|
if [ $? -eq 0 ]; then
|
|
echo "SUCCESS — uploaded to S3" >> "$LOG"
|
|
rm -f "$BACKUP_DIR/itpp-backup-$DATE.rsc"
|
|
echo "[SILENT]"
|
|
else
|
|
echo "FAILED: S3 upload error" >> "$LOG"
|
|
echo "Home Router Backup FAILED — S3 upload"
|
|
exit 1
|
|
fi
|