Voila un nouveau script pour le [search]monitoring de Neuf Box[/search] avec munin: J’ai mis quelques temps avant de le diffuser. En effet il y’ avait un problème de détection de client non connecté qui se remarque par le nombre de client total qui ne vaut pas la somme des clients sur les différents réseau lan2 lan3 lan4 et Wifi (wlan0). Mais depuis quelques temps plus aucun bug… A vérifier….
Voila le plus important le code du script:
#!/bin/sh
##############################################################################
## DESCRIPTION ##
##############################################################################
#
# Ce script reupère les donnée sur la page "detecttion des intrusions" et
#formate ces donnée pour munin
#utilise XMLStarlet
#apt-get install xmlstarlet
#
#le script comprent les commandes:
# -> autoconf
# -> config
# -> <vide>
##############################################################################
## Variable de configuration ##
##############################################################################
#l'adresse ip du modem routeur TELE2
IP_NEUFBOX="192.168.1.1"
#############################################################################
## CONSTANTE POUR FACILITE L'EVOLUTION DU SCRIPT ##
#############################################################################
#
#ces constantes sont là pour s'adapter à d'eventuelles modifications
#du firmware du modem ou pour permetre au script d'évoluer
#
#page de l'interface WEB qui liste les info de la neuf
PAGE_INFO="/stb/info"
#fichier temporaire ou sera stocké cette page pour faire les traitements
PAGE_FILE="/tmp/temp.munin.neufboxV4.stb.info"
# PORTS diponible sur la neufbox
PORTS="lan2 lan3 lan4 wlan0"
#############################################################################
## SCRIPT ##
#############################################################################
getfile()
{
wget -q -O"$PAGE_FILE" "http://$IP_NEUFBOX$PAGE_INFO"
}
if [ "$1" = "autoconf" ]; then
#on recupère la page
getfile
#on verifie que c'est la bonne page avec son titre
ret=$(grep "<lan>" "$PAGE_FILE" | wc -l)
if [ "$ret" > "0" ] ; then
echo yes
exit 0
else
echo no
exit 1
fi
fi
if [ "$1" = "config" ]; then
echo 'graph_title NeufBox Clients Counts'
echo 'graph_args --base 1000 -l 0 -u 1'
echo 'graph_vlabel Clients Count'
echo 'graph_category NEUFBOXV4'
for s in $PORTS
do
echo "$s"'.label '"$s"
if [ "$s" = "lan2" ]; then
echo "$s"'.draw AREA'
else
echo "$s"'.draw STACK'
fi
done
echo 'total.label total'
echo 'total.draw LINE1'
exit 0
fi
if ! [ -f $PAGE_FILE ]; then
getfile
elif [ $(expr `date '+%s'` - `date -r $PAGE_FILE '+%s'`) -ge 250 ]; then
getfile
fi
#repartition des ports
port_used=$(xmlstarlet sel -T -t -m /info/lan/client -v "port" -n $PAGE_FILE)
#echo $port_used
for s in $PORTS
do
ret=$(echo $port_used | grep -o $s | wc -l)
echo "$s"'.value '$ret
done
#nombre de clients total
nbclient=$(xmlstarlet sel -t -v "count(//info/lan/client)" $PAGE_FILE)
echo 'total.value '$nbclient
Laisser un commentaire