Messages étiquettés scripting

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 😉

Tags: , ,

Passage propre d’arguments en script shell

Tout admin est ou a été confronté à réaliser des dizaines de script d’automatisation de tâche ou même de scripts lui facilitant des tâches quotidiennes. Dans ce billet je vais expliquer comment on va pouvoir passer des arguments de manière propre à un script shell de cette manière :

./script -h 192.168.10.24 -u admin -p password

oubliez les scripts sales comme celui-ci :

./script 192.168.10.24 admin password

Vous avez même la possibilité de créer un usage :

./script
Argument error, usage :
script: -h hostname -u username -p password [-c command]

Voici comment écrire un script rapidement :

#!/usr/bin/env bash
#Script exemple
#
aoption=
boption=
bval=
#Initialisation des paramètres et valeurs
 
while getopts 'ab:' OPTION
#a signifique c'est simplement une option
#b: signifique que cette option possède un paramètre
do
   case $OPTION in
   a)    aoption=1
          ;;
   b)    boption=1
         bval="$OPTARG"
#OPTARG est récupéré de la valeur passé après -b
          ;;
   ?)    printf "Usage : %s [-a ] [- b valeur] args\n" >&2
#Affichage du usage lorsque qu'aucun paramètre n'est passé
          exit 2
          ;;
   esac
done
shift $((OPTIND - 1))
if [ "$aoption" ]
then
   printf "Option -a spécifiée\n"
fi
if [ "$boption" ]
then
   printf 'Option -b spécifiée, valeur : "%s"' "$bval"
fi

Source : linux.com – Inspiré du Bash CookBook

Tags: