Checkpoint Firewall Configuration Backup
#!/bin/bash
# Check Point Firewall Module Backup
#
# Skript nach /home/admin kopieren & chmod 700
# Die Backups landen dann in dem in $CFG_PATH definierten Verzeichnis
# Einplanen mit (z.B.) add cron job Modulebackup command "/home/admin/module-backup.sh" recurrence weekly days 0 time 23:30
# Voraussetzung: Für das zu sichernde Gateway muss bereits ein Hosts-Eintrag existieren.
# Siehe dazu auch add-gw-hostnames.sh
#
# Michael Goessmann Matos, NTT - Mar 2021
. /opt/CPshared/5.0/tmp/.CPprofile.sh
# Liste von Gateways aus der Check Point Datenbank extrahieren
GW_LIST=(`mgmt_cli -r true show gateways-and-servers limit 500 | egrep -B 1 'ClusterMember|simple-gateway' | grep name | awk '{print $2}' | tr -d '"'`)
PORT=18208
CFG_PATH=/home/admin/module-config
if [ ! -d $CFG_PATH ]; then
mkdir -p $CFG_PATH
fi
for INDEX in "${GW_LIST[@]}"; do
# Nonprintables entfernen, sonst klappt das nicht. Warum auch immer.
GW=`tr -dc '[[:print:]]' <<< "$INDEX"`
# Gibts fuer das Gateway einen Hosts-Eintrag? Backup nur dann versuchen.
HOSTS=`clish -c "show configuration host" | grep $GW | awk '{print $4}'`
if [[ "$HOSTS" = "$GW" ]]; then
# Config Backup via cprid_util versuchen, wenn der CPRID Port offen ist.
OPEN=`timeout 3 bash -c "</dev/tcp/$GW/$PORT" 2>/dev/null && echo "Open" || echo "Closed"`
if [[ "$OPEN" = "Open" ]]; then
$CPDIR/bin/cprid_util -server $GW -verbose rexec -rcmd clish -c "show configuration" > $CFG_PATH/$GW.cfg
fi
fi
done