FORTIGATE - Configuration Dump Script

From Wiki.IT-Arts.net


#!/bin/bash
#
#    Usage: ./thisScript.sh {IPv4} {PORT}



#####    VARIABLES
IP="$1"
PORT="$2"
MESSAGE="Usage: $0 {IPv4} {PORT}"



#####    FUNTIONS
is_valid_ipv4() {
    local -a octets=( ${1//\./ } )
    local RETURNVALUE=0

    # return an error if the IP doesn't have exactly 4 octets
    [[ ${#octets[@]} -ne 4 ]] && return 1
    # return an error if first octet is 0
    [[ ${octets[0]} -eq 0 ]] && return 1

    for octet in ${octets[@]}
    do
    if [[ ${octet} =~ ^[0-9]{1,3}$ ]]; then
        # shift number by 8 bits, anything larger than 255 will be > 0
        ((RETURNVALUE += octet>>8 ))
    else
        # octet wasn't numeric, return error
        return 1
    fi
    done

return ${RETURNVALUE}
}



#####   TESTS
# SSH binary
if ! [ -x /usr/bin/ssh ]; then
    echo "Hey Wake up!!! No SSH found!!!"
    exit 0
fi


#####    SCRIPT
echo "##################################################################"
echo "Dump Fortigate..."

# Test IPv4 validity
is_valid_ipv4 ${IP};
if ! [[ $? -eq 0 ]]; then
    echo "IPv4 is not valid"
    echo $MESSAGE
    exit 1
fi

# Test if port in an integer between 1 and 65535
if ! [[ $PORT -eq $PORT && $PORT -gt 1 && $PORT -lt 65535 ]]; then
    echo "Port is not valid"
    echo $MESSAGE
    exit 1
fi

# Too much arguments
if ! [[ -z "$3" ]]; then
    echo "Hey! Have a pause and take coffee!!!"
    echo "$0 $1 $2 $3 $4 $5"
    echo ">"
    echo $MESSAGE
    exit 1
fi

# Launch SSH without interactive prompt for RSA key fingerprint
echo "Launch SSH..."
ssh -v -oStrictHostKeyChecking=no admin@$IP -p $PORT 'get sys performance status
diagnose hardware sysinfo cpu
get system interface
fnsysctl ifconfig
diagnose hardware sysinfo
diagnose hardware sysinfo interrupts
diagnose hardware sys mem
diagnose hardware sysinfo iomem
diagnose hardware sysinfo ioports
diagnose hardware sys shm
diagnose hardware sysinfo slab
diagnose firewall packet distribution 
get sys performance firewall statistics
diagnose sys session full-stat
';

echo "##################################################################"

exit 0