#1 Le 24/02/2017, à 13:55
- Hujino
Script shell - datacore - problème
Bonjour à toutes et à tous,
Suite à la mise en place d'un outil de supervision, je dois créer des scripts pour interroger mes OIDs de mes datacore et les intégrer à ma supervision.
Je débute en shell, voici mon code :
#! /bin/sh
STATE=2
PLUGIN_PATH='/srv/eyesofnetwork/nagios/plugins'
COMMAND_PATH='/bin'
####################################### Resultats #########################################
#### valeur pour up to date du vDISK PRODUCTION ####
tab=(
'.32.69.52.50.50.56.68.51.66.51.69.69.54.56.68.65.65.69.69.55.57.50.68.52.55.53.55.68.52.53.57.69.70'
'.32.56.67.65.55.51.51.67.54.67.54.55.55.54.52.65.52.56.55.52.67.50.52.56.50.56.54.53.52.69.54.55.70'
'.32.68.66.69.56.65.53.54.70.66.49.70.54.57.69.52.65.68.50.69.52.67.53.52.68.67.51.51.48.70.49.57.48'
'.32.54.55.66.67.52.51.53.67.69.57.50.55.57.57.57.67.55.56.66.48.54.65.57.67.51.65.66.57.54.70.69.54'
'.32.51.56.56.66.67.68.68.51.53.69.65.57.54.50.69.53.55.69.48.65.52.69.53.68.57.54.50.53.56.48.55.49'
'.32.54.52.67.56.67.65.55.57.70.53.69.49.70.68.53.51.67.50.50.53.70.48.65.49.68.50.70.65.70.52.49.65'
'.32.52.65.70.69.68.53.53.68.48.50.53.55.49.55.54.68.57.49.49.53.70.57.51.65.51.57.69.69.65.52.57.55'
'.32.51.56.54.57.53.67.50.52.70.51.56.55.50.65.66.54.52.70.54.50.65.65.56.55.51.65.51.67.49.70.49.53'
'.32.66.53.69.52.65.57.49.70.69.54.53.51.69.51.66.65.65.66.70.48.57.70.51.53.51.65.67.51.50.57.56.69'
'.32.52.67.53.52.69.50.68.65.68.69.66.56.66.67.48.49.56.54.50.55.67.56.56.69.51.67.69.51.49.68.70.56'
)
if [[ $4 = status && $6 -eq 1 || $6 -eq 2 ]]
then
for ((n=0; n < 11; n++))
do
ar+=( "$($PLUGIN_PATH/check_snmp -H $2 -C X -o 1.3.6.1.4.1.7652.1.1.1.6"${tab[n]}" | grep to | cut -d '-' -f 2 | cut -d '"' -f 2 | cut -c -2)" )
if [[ "${ar[n]}" == "Up" ]] ; then
STATE=0
else
STATE=2
fi
done
rslt_affiche="PRODUCTION_01 est $ar & PRODUCTION_02 est ${ar[1]} & PRODUCTION_03 est ${ar[2]} & PRODUCTION_04 est ${ar[3]} & PRODUCTION_05 est ${ar[4]} & PRODUCTION_06 est ${ar[5]} & PRODUCTION_07 est ${ar[6]} & PRODUCTION_08 est ${ar[7]} & PRODUCTION_09 est ${ar[8]} & PRODUCTION_10 est ${ar[9]}"
fi
if [[ ($4 == status) ]] ; then #affichage sur le nagios
$PLUGIN_PATH/check_dummy $STATE "$rslt_affiche"
fi
exit $STATE
Mon problème actuel
Mon script retourne toujours l'état "CRITIQUE" alors que tous mes vdisk sont UP.
Je pense que le problème vient de là (mon if dans ma boucle retourne la valeur STATE=2, elle arrive pas à lire mon if) :
if [[ "${ar[n]}" == "Up" ]] ; then
STATE=0
else
STATE=2
fi
J'ai testé plusieurs choses mais je n'arrive pas à corriger ce problème
Et si je met :
if [[ ($ar == "Up") ]] ; then
STATE=0
else
STATE=2
fi
Il ne teste que ma première valeur
Merci de votre aide.
Dernière modification par Hujino (Le 24/02/2017, à 14:15)
Hors ligne
#2 Le 24/02/2017, à 16:22
- pingouinux
Re : Script shell - datacore - problème
Bonjour,
Déjà, comme tu ne sors pas de la boucle
for ((n=0; n < 11; n++))
tu ne récupères la valeur de STATE que pour n=10
Hors ligne