Nagios : monitorer la HA netASQ en script shell

Sur les pare-feu NetASQ il y a la possibilité de les mettre en High availability (Haute Dispo).

Un moyen assez simple de le monitorer avec nagios est de chercker son numéro de série. Il est écrit en script shell et parse les arguments à l’aide de getops. (Voir article sur Comment passer proprement des arguments en script shell)

Il est très simple et utilise la commande smnpget et récupère le numéro de série.
On passe comme arguments au script adresse, communauté et numéro de série du primaire ce cette manière :
./check_netasq_ha -H hostadress -c community -s masterSerialNumber

Il retourne OK (0) si il récupère bien le bon S/N et CRITICAL (2) si il ne récupère pas ce S/N.

De cette manière il est facile de savoir si snmp si le pare-feu est en mode principal ou secondaire.

#!/usr/bin/env bash
hflag=
cflag=
sflag=
while getopts 'H:c:s:' OPTION
do
  case $OPTION in
  H)    hflag=1
                host="$OPTARG"
                ;;
  c)    cflag=1
                community="$OPTARG"
                ;;
  s)    sflag=1
                snumber="$OPTARG"
                ;;
  ?)    printf "Usage: %s: -H hostname -c community -s MasterSerialNumber \n" $(basename $0) >&2
                exit 2
                ;;
  esac
done
shift $(($OPTIND - 1))
if [ "$hflag" ] && [ "$cflag" ] && [ "$sflag" ]
then
  CHECK=$(snmpget -v1 -c $community $host 1.3.6.1.2.1.1.5.0 | awk '{print $4}' | sed -e "s/\"//2" | sed -e "s/\"//1")
        if [ $CHECK = $snumber ];
        then
                printf "HA OK : Primaire en production\n"
                exit 0
        else
                printf "HA CRITICAL : Secondaire en production\n"
                printf "SN actuel : $CHECK\n"
                printf "SN master : $snumber\n"
                exit 2
        fi
else
 printf "Argument error !\n"
 printf "Usage: %s: [-H hostname] [-c community] [-s MasterSerialNumber ]args\n" $(basename $0) >&2
 exit 3
fi

Vous pouvez l’ajouter à votre bibliothèque de scripts nagios 🙂

Il pourrait certainement être amélioré mais il déjà est pratique 😉

N’hésitez pas à ajouter des commentaires si vous avez des axes d’amélioration 😉