Add Telegram notifications for Borg backup status
This commit is contained in:
@@ -11,6 +11,10 @@ export BORG_CONFIG_DIR="{{ borg_config_dir }}/config"
|
|||||||
export BORG_SECURITY_DIR="{{ borg_config_dir }}/security"
|
export BORG_SECURITY_DIR="{{ borg_config_dir }}/security"
|
||||||
export BORG_KEYS_DIR="{{ borg_config_dir }}/keys"
|
export BORG_KEYS_DIR="{{ borg_config_dir }}/keys"
|
||||||
|
|
||||||
|
# Telegram notification variables
|
||||||
|
export TELEGRAM_BOT_TOKEN="{{ lookup('community.general.onepassword', 'Telegram Home Server Bot', vault='Dotfiles', field='password') }}"
|
||||||
|
export TELEGRAM_CHAT_ID="{{ lookup('community.general.onepassword', 'Telegram Home Server Bot', vault='Dotfiles', field='chat_id') }}"
|
||||||
|
|
||||||
# Backup name with timestamp
|
# Backup name with timestamp
|
||||||
BACKUP_NAME="services-$(date +%Y%m%d-%H%M%S)"
|
BACKUP_NAME="services-$(date +%Y%m%d-%H%M%S)"
|
||||||
|
|
||||||
@@ -19,6 +23,36 @@ log() {
|
|||||||
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a /var/log/borg-backup.log
|
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a /var/log/borg-backup.log
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Telegram notification function
|
||||||
|
send_telegram() {
|
||||||
|
local message="$1"
|
||||||
|
|
||||||
|
if [ -z "$TELEGRAM_BOT_TOKEN" ] || [ -z "$TELEGRAM_CHAT_ID" ]; then
|
||||||
|
log "Telegram credentials not configured, skipping notification"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
local payload=$(cat <<EOF
|
||||||
|
{
|
||||||
|
"chat_id": "$TELEGRAM_CHAT_ID",
|
||||||
|
"text": "$message",
|
||||||
|
"parse_mode": "HTML"
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
)
|
||||||
|
|
||||||
|
curl -s -X POST \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d "$payload" \
|
||||||
|
"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" > /dev/null 2>&1
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
log "Telegram notification sent successfully"
|
||||||
|
else
|
||||||
|
log "Failed to send Telegram notification"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# Ensure all Borg directories exist
|
# Ensure all Borg directories exist
|
||||||
mkdir -p "$BORG_CACHE_DIR"
|
mkdir -p "$BORG_CACHE_DIR"
|
||||||
mkdir -p "$BORG_CONFIG_DIR"
|
mkdir -p "$BORG_CONFIG_DIR"
|
||||||
@@ -89,8 +123,33 @@ global_exit=$(( compact_exit > global_exit ? compact_exit : global_exit ))
|
|||||||
|
|
||||||
if [ $global_exit -eq 0 ]; then
|
if [ $global_exit -eq 0 ]; then
|
||||||
log "Backup completed successfully"
|
log "Backup completed successfully"
|
||||||
|
send_telegram "🔒 <b>Borg Backup Success</b>
|
||||||
|
|
||||||
|
✅ Backup: $BACKUP_NAME completed successfully
|
||||||
|
📊 Repository: {{ borg_repo_dir }}
|
||||||
|
🕐 Completed: $(date '+%Y-%m-%d %H:%M:%S')
|
||||||
|
|
||||||
|
All operations completed without errors."
|
||||||
|
elif [ $global_exit -eq 1 ]; then
|
||||||
|
log "Backup completed with warnings (exit code: $global_exit)"
|
||||||
|
send_telegram "⚠️ <b>Borg Backup Warning</b>
|
||||||
|
|
||||||
|
⚠️ Backup: $BACKUP_NAME completed with warnings
|
||||||
|
📊 Repository: {{ borg_repo_dir }}
|
||||||
|
🕐 Completed: $(date '+%Y-%m-%d %H:%M:%S')
|
||||||
|
|
||||||
|
Exit code: $global_exit
|
||||||
|
Check logs for details: /var/log/borg-backup.log"
|
||||||
else
|
else
|
||||||
log "Backup completed with warnings or errors (exit code: $global_exit)"
|
log "Backup completed with warnings or errors (exit code: $global_exit)"
|
||||||
|
send_telegram "❌ <b>Borg Backup Failed</b>
|
||||||
|
|
||||||
|
❌ Backup: $BACKUP_NAME failed
|
||||||
|
📊 Repository: {{ borg_repo_dir }}
|
||||||
|
🕐 Failed: $(date '+%Y-%m-%d %H:%M:%S')
|
||||||
|
|
||||||
|
Exit code: $global_exit
|
||||||
|
Check logs immediately: /var/log/borg-backup.log"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exit $global_exit
|
exit $global_exit
|
||||||
|
Reference in New Issue
Block a user