#!/bin/sh # Ce script sert à la sauvegarde de notre firewall pfSense # Très inspiré du script http://www.scribd.com/doc/92371725/pfsense # Configuration BASE_DIR="$HOME/backups" PREFIXE="sauv_pfsense_" SUFFIXE=$( date +%Y%m%d-%H%M ) DUREE_DE_VIE=0 USERNAME="backuppc" PASSWORD="toto123" COOKIES_FILE=$( mktemp ) CSRF_MAGIC="" # Arrêt à la première erreur non-catchée set -e # Fonctions # affiche le message d'aide usage() { cat <&2 exit 1 ;; esac done shift $( expr $OPTIND - 1 ) HOSTNAME_PFSENSE="$1" BASE_NAME=$( printf "%s" $( basename "$REPDRUPAL" ) | tr -c "a-zA-Z" "-" ) if [ -z "$HOSTNAME_PFSENSE" ]; then echo "ERREUR: veuillez indiquer un hostname (ou une IP)." >&2 clean_up_and_exit 1 fi if [ ! -d "$BASE_DIR" ]; then echo "ERREUR: repertoire de destination '$BASE_DIR' inexistant." >&2 clean_up_and_exit 1 fi # Récupération du CSRF CSRF_MAGIC="$( wget -q -O - --keep-session-cookies --save-cookies "$COOKIES_FILE" https://$HOSTNAME_PFSENSE/index.php | sed -n "s/.*&2 clean_up_and_exit 1 fi # Authentification if ! wget -q -O /dev/null --keep-session-cookies --save-cookies "$COOKIES_FILE" --load-cookies "$COOKIES_FILE" --post-data "__csrf_magic=$CSRF_MAGIC&usernamefld=$USERNAME&passwordfld=$PASSWORD&login=Login" https://$HOSTNAME_PFSENSE/index.php; then echo "ERREUR: echec a la premiere connexion." >&2 clean_up_and_exit 1 fi # On vérifie que l'on est bien connecté if [ $( wget -q -O - --keep-session-cookies --save-cookies "$COOKIES_FILE" --load-cookies "$COOKIES_FILE" https://$HOSTNAME_PFSENSE/diag_backup.php | grep -c "Diagnostics: Backup/restore" ) -lt 1 ]; then echo "ERREUR: impossible d'accéder à la page de backup." >&2 clean_up_and_exit 1 fi #Config. seule wget -q -O "$BASE_DIR/$PREFIXE$BASE_NAME$HOSTNAME_PFSENSE-conf_$SUFFIXE.xml" --keep-session-cookies --save-cookies "$COOKIES_FILE" --load-cookies "$COOKIES_FILE" --post-data "Submit=Download%20configuration&donotbackuprrd=on" https://$HOSTNAME_PFSENSE/diag_backup.php #Config + données RRD wget -q -O "$BASE_DIR/$PREFIXE$BASE_NAME$HOSTNAME_PFSENSE-confrrd_$SUFFIXE.xml" --keep-session-cookies --save-cookies "$COOKIES_FILE" --load-cookies "$COOKIES_FILE" --post-data "Submit=Download%20configuration" https://$HOSTNAME_PFSENSE/diag_backup.php # Suppression des vieux backups if [ "$DUREE_DE_VIE" -ne "0" ]; then find $BASE_DIR -name "$PREFIXE$BASE_NAME$HOSTNAME_PFSENSE-conf_*.xml" -mtime "+$DUREE_DE_VIE" -print0 | xargs -n 200 -r -0 rm -f find $BASE_DIR -name "$PREFIXE$BASE_NAME$HOSTNAME_PFSENSE-confrrd_*.xml" -mtime "+$DUREE_DE_VIE" -print0 | xargs -n 200 -r -0 rm -f fi clean_up_and_exit 0