Check Point Tool – dbdel ver3.1

Fir3net.com is pleased to release dbdel ver3.1. This is basically a wrapper for Check Points existing dbver tool, but allows you to remove 100`s of Database Revisions with one simple command string. Unlike dbver where you have to add each database revision id. This allows you to add the amount your want to remove and then does the rest for you.

Script

#!/bin/bash
#
# DB Revision Deletion Tool v3.1
# Author : Fir3net.com
# Date 	 : 13/5/10
#

. /opt/CPshrd-R??/tmp/.CPprofile.sh

### CHECK OS IS LINUX ###

OS=`uname`
if [ "${OS}" != "Linux" ] ; then
echo "${OS}" is not currently supported by dbdel\.
exit 1
fi

### VARIABLES ###

VERDB=$FWDIR/conf/db_versions/database/versioning_db.fws
TOTALDBLIST=`grep _id $VERDB | sed 's/.*(\|)//g'`
TOTALDB=`grep _id $VERDB | sed 's/.*(\|)//g' | wc -l | sed 's/^ *//g'`
TOTALSIZE=`du -sh  /opt/CPsuite-R65/fw1/conf/db_versions/repository/ | awk ' { print $1 } '`

### FUNCTIONS ###

list()
{
awk '
BEGIN { print " ----------------------------------\n | ID              Date           |\n ----------------------------------" }
/ver_id|date/{arr[i++]=gensub(/^[^(]*\(|\)|"/,"","g")}
arr[1]{print " | " arr[1]" | " arr[0]" | " ;i=0;delete arr}
END { print  " ----------------------------------"}
' "${VERDB}"
}

delete()
{    
    if [ "${DELNUM}" -gt "${TOTALDB}" ] ; then
    	echo Error : Unable to remove "${DELNUM}" DB Revision\(s\) as there are only "${TOTALDB}" DB Revision\(s\) remaining.
    	exit 1
    fi

    TOTALDBARRAY=$((${TOTALDB} - ${DELNUM}))
    VersionArray=($TOTALDBLIST)
    echo -n Are you sure you want to remove "${DELNUM}" from the current "${TOTALDB}" DB Revision\(s\) ? \[Y\/N\] ; read input
    case $input in
    y ) 
     ;;
    Y ) 
     ;;
    n ) 
        exit 0
     ;;
    N ) 
	exit 0
     ;;
    * ) 
        exit 0
    esac

    dbver -m delete `for ((j=0; j < ${#VersionArray[@]} - ${TOTALDBARRAY} ; j++)) ; do echo -n ${VersionArray[j]}, ; done` > /dev/null		
    
    if [ $? == 0 ] ; then
    	echo Successfully removed "${DELNUM}" DB Revision\(s\).
    else  
    	echo Error : Return Code $?.
    fi
    echo
}

delete_before()
{
    TOTALBEFORE=`list | awk ' NR>3 { print $2 } ' | grep -B10000 ${DELBEFORE} | wc -l | sed 's/^ *//g'`

    if [ "${TOTALBEFORE}" -eq "0" ] ; then
    	echo Error : Incorrect Database Revision ID supplied.
    	exit 1
    fi

    TOTALDBARRAY=$((${TOTALDB} - ${TOTALBEFORE}))
    VersionArray=($TOTALDBLIST)
    echo -n Are you sure you want to remove the Database Revision "${DELBEFORE}" and all Revisions before? \[Y\/N\] ; read input
    case $input in
    y ) 
     ;;
    Y ) 
     ;;
    n ) 
        exit 0
     ;;
    N ) 
	exit 0
     ;;
    * ) 
        exit 0
    esac

    dbver -m delete `for ((j=0; j < ${#VersionArray[@]} - ${TOTALDBARRAY} ; j++)) ; do echo -n ${VersionArray[j]}, ; done` > /dev/null	
    
    if [ $? == 0 ] ; then
    	echo Successfully removed "${TOTALBEFORE}" DB Revision\(s\).
    else  
    	echo Error : Return Code $?
    fi
    echo
}

usage()
{
cat << EOF
usage: dbdel [-d number | -b id_number | -s | -c | -l ]
List, count and remove multiple database revisions

   -d      number of db revisions to remove
   -b 	   remove this db revision id and all before
   -s 	   size of all DB Revisions
   -c      count DB Revisions
   -l      list  DB Revisions
   -?      usage

EOF
}


### MAIN ###

while getopts "d:b:slc?" OPTION
do
     case $OPTION in
         d)
             DELNUM=$OPTARG
	     delete
             exit
             ;;
	 b)
	     DELBEFORE=$OPTARG
	     delete_before
	     exit
             ;;
	 s)
	     echo Total size of all DB Revisions = "${TOTALSIZE}"
	     echo
	     exit
             ;;
         l)
	     list
             exit
             ;;
         c)
             echo Total number of Database Revisions = "${TOTALDB}"
             echo
	     exit
             ;;
	 ?)
             usage
             exit
             ;;
     esac
done

usage
exit 0

You can copy and paste the script into your manager.

Adding the script to your manager

Below shows you the steps required to add the tool to your Check Point manager.

[Expert@sc-manger]#cat > dbdel
 
<-- paste script -->
 
[Expert@sc-manger]#chmod +x dbdel
[Expert@sc-manger]#mv dbdel $FWDIR/bin

Options

Below shows you the switches the tool allows you to use.

[Expert@sc-manger]# dbdel ?
usage: dbdel [-d number | -b id_number | -s | -c | -l ]
List, count and remove multiple database revisions

-d      number of db revisions to remove
-b      remove this db revision id and all before
-s      size of all DB Revisions
-c      count DB Revisions
-l      list  DB Revisions
-?      usage

Count

[Expert@sc-manger]#  dbdel -c
Total number of Database Revisions = 13

Remove DB Revisions

[Expert@sc-manger]# dbdel -d 632
Are you sure you want to remove 632 from the current 732 DB Revision(s) ? [Y/N]y
Successfully removed 632 DB Revision(s)

Remove DB Revisions before

[Expert@sc-manger]# dbdel -b 122
Are you sure you want to remove the Database Revision 122 and all Revisions before? [Y/N]
Successfully removed 122 DB Revision(s)

Show the Size

[Expert@sc-manger]# dbdel -s
Total size of all DB Revisions = 4.2M

List Revisions

[Expert@sc-manager]# dbdel -l
 ----------------------------------
 | ID              Date           |
 ----------------------------------
 | 61 | Fri Oct  2 11:05:21 2009 |
 | 62 | Tue Nov 17 11:04:23 2009 |
 ----------------------------------

 

Rick Donato

Want to become an IT Security expert?

Here is our hand-picked selection of the best courses you can find online:
Internet Security Deep Dive course
Complete Cyber Security Course – Hackers Exposed
CompTIA Security+ (SY0-601) Certification Complete course
and our recommended certification practice exams:
AlphaPrep Practice Tests - Free Trial