macdaddybighorn

pfSense backup script

Feb 22nd, 2024
1,288
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.35 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. #MacDaddyBighorn's pfSense backup script
  4. #This will back up your pfsense config and email you if the backup location isn't ready.
  5. #There are probably some good improvements to be made, but works for me.
  6.  
  7. #Mount path for backup location, to verify mounted and ready (since I encrypt mine I don't want it to try)
  8. MOUNT_PATH="/mnt/backup/"
  9.  
  10. #Path to backup config file
  11. BACKUP_PATH="/mnt/backup/pfbackup/"
  12.  
  13. #pfSense Info
  14. PFSENSE_IP="https://IP_ADDRESS:PORT/"
  15. PFSENSE_USER="ADMIN"
  16. PFSENSE_PASS="PASSWORD"
  17.  
  18. #File name to append in front of date
  19. FILE_NAME="pfSense_"
  20.  
  21. # email address details (must be set up email capability on server first)
  22. EMAIL_FROM='pfSense Backup <[email protected]>'
  23.  
  24. #Verfy mountpoint is valid (unencrypted, mounted, etc.)
  25. if mountpoint -q "$MOUNT_PATH"
  26.    then
  27.       curl -L -k --cookie-jar "$BACKUP_PATH"cookies.txt \
  28.            "$PFSENSE_IP" \
  29.            | grep "name='__csrf_magic'" \
  30.            | sed 's/.*value="\(.*\)".*/\1/' > "$BACKUP_PATH"csrf.txt
  31.  
  32.       curl -L -k --cookie "$BACKUP_PATH"cookies.txt --cookie-jar "$BACKUP_PATH"cookies.txt \
  33.            --data-urlencode "login=Login" \
  34.            --data-urlencode "usernamefld=$PFSENSE_USER" \
  35.            --data-urlencode "passwordfld=$PFSENSE_PASS" \
  36.            --data-urlencode "__csrf_magic=$(cat "$BACKUP_PATH"csrf.txt)" \
  37.            "$PFSENSE_IP" > /dev/null
  38.  
  39.       curl -L -k --cookie "$BACKUP_PATH"cookies.txt --cookie-jar "$BACKUP_PATH"cookies.txt \
  40.            "$PFSENSE_IP"diag_backup.php  \
  41.            | grep "name='__csrf_magic'"   \
  42.            | sed 's/.*value="\(.*\)".*/\1/' > "$BACKUP_PATH"csrf.txt
  43.  
  44.       curl -L -k --cookie "$BACKUP_PATH"cookies.txt --cookie-jar "$BACKUP_PATH"cookies.txt \
  45.            --data-urlencode "download=download" \
  46.            --data-urlencode "donotbackuprrd=yes" \
  47.            --data-urlencode "__csrf_magic=$(head -n 1 "$BACKUP_PATH"csrf.txt)" \
  48.            "$PFSENSE_IP"diag_backup.php > "$BACKUP_PATH$FILE_NAME"`date +%Y"-"%m"-"%d`.xml
  49.  
  50.       rm "$BACKUP_PATH"cookies.txt
  51.       rm "$BACKUP_PATH"csrf.txt
  52.  
  53.       #Commented out, no need to notify if successful
  54.       #echo "pfSense Primary Backup Complete" | mail -s "pfSense Backup Complete" -r "$EMAIL_FROM" "$EMAIL_TO"
  55.   else
  56.     echo "pfSense Primary Backup Failed" | mail -s "pfSense Backup Failed" -r "$EMAIL_FROM" "$EMAIL_TO"
  57. fi
Tags: Backup pfsense
Advertisement
Add Comment
Please, Sign In to add comment