rendered paste body#!/bin/bash# Variables à définir:# ------------------------------------------# Chemins vers les fichiers utilesrrdfile="/root/brol/net/NETstats.rrd";rrdtoolbin="/usr/bin/rrdtool";htmldir="/var/www/brol/net";tempdir="/root/tmp";scripts="/root/brol/scripts";# Couleurs des graphes# bytes TX, bytes RX, bytes TX 2, bytes RX 2, packets TX, packets RX, packets TX 2, packets RX 2colors=(660000 009966 FF3333 99CC99 CC3300 336600 FF9933 99CC66);# Liste des interfaces à surveiller (attention à bien avoir créé la base de données correspondante)ifaces={eth0,eth1};# ------------------------------------------# # ------------------------------------------ # Remplissage de la base de donnéesfor i in `eval echo $ifaces`;{ # On récupère l'ancienne valeur enregistrée (dans les fichiers temporaires) : TXold=$(tail $tempdir/NETstats.${i}.tmp | cut -d" " -f1); RXold=$(tail $tempdir/NETstats.${i}.tmp | cut -d" " -f2); TXpold=$(tail $tempdir/NETstats.${i}.tmp | cut -d" " -f3); RXpold=$(tail $tempdir/NETstats.${i}.tmp | cut -d" " -f4); # On récupère les nouvelles valeurs, par les scripts prévus : TXnew=$($scripts/getbytes.pl | grep ${i}:tx | cut -d")" -f1 | cut -d"(" -f2); RXnew=$($scripts/getbytes.pl | grep ${i}:rx | cut -d")" -f1 | cut -d"(" -f2); TXpnew=$($scripts/getpackets.pl | grep ${i}:tx | cut -d")" -f1 | cut -d"(" -f2); RXpnew=$($scripts/getpackets.pl | grep ${i}:rx | cut -d")" -f1 | cut -d"(" -f2); # On calcule la moyenne sur 5 minutes : let TX="($TXnew-$TXold)/300"; let RX="($RXnew-$RXold)/300"; let TXp="($TXpnew-$TXpold)/300"; let RXp="($RXpnew-$RXpold)/300"; # On crée une partie de la chaine nécessaire au remplissage de la base de données eval $i="$( echo -n ":"; echo -n $TX; echo -n ":"; echo -n $RX; echo -n ":"; echo -n $TXp; echo -n ":"; echo -n $RXp; )"; # On remplit les fichiers temporaires echo $TXnew $RXnew $TXpnew $RXpnew > $tempdir/NETstats.$i.tmp} # On remplit la base de donnéesplop="N$(for i in `eval echo $ifaces`; { eval "tmp=\$$i"; echo -n $tmp; } echo "";)";$rrdtoolbin update $rrdfile $plop;# Génration des graphes# ------------------------------------------# Génération des variables suivant le type de graphe# time_name -> intitulé sur le png créé# average -> moyenne sur n minutes# prefix -> préfixe du fichier créé# time_warp -> décalage en secondes par rapport à l'instant présentcase $1 in week) time_name="7 days"; average="30"; prefix="weekly"; time_warp="-s-604800"; date > $htmldir/lastdate_week.txt;; month) time_name="30 days"; average="30"; prefix="monthly"; time_warp="-s-2592000"; date > $htmldir/lastdate_month.txt;; year) time_name="one year"; average="30"; prefix="yearly"; time_warp="-s-31536000"; date > $htmldir/lastdate_year.txt;; *) time_name="24 hours"; average="5"; prefix="daily"; time_warp=""; date > $htmldir/lastdate_day.txt;;esac# Génération réelle des graphesfor i in `eval echo $ifaces`; do for j in bytes packets; do $rrdtoolbin graph $htmldir/net_${i}_${j}_${prefix}.png \ --title="$i ${time_name} variations (${average} minutes average) [${j}]" \ -aPNG -h200 -w600 -l0 ${time_warp} -v ${j}/s\ DEF:${j}_TX=$rrdfile:${j}TX${i}:LAST \ DEF:${j}_RX=$rrdfile:${j}RX${i}:LAST \ LINE2:${j}_TX#${colors[0]} \ LINE2:${j}_RX#${colors[1]} \ AREA:${j}_TX#${colors[2]}:"${i} ${j}TX/sec" \ GPRINT:${j}_TX:MAX:"Max\\: %2.lf ${j}/s" \ GPRINT:${j}_TX:AVERAGE:"Average\\: %2.lf ${j}/s" \ GPRINT:${j}_TX:LAST:"Current\\: %2.lf ${j}/s \\n" \ AREA:${j}_RX#${colors[3]}:"${i} ${j}RX/sec" \ GPRINT:${j}_RX:MAX:"Max\\: %2.lf ${j}/s" \ GPRINT:${j}_RX:AVERAGE:"Average\\: %2.lf ${j}/s" \ GPRINT:${j}_RX:LAST:"Current\\: %2.lf ${j}/s\\n" \ CDEF:nodat=${j}_TX,${j}_RX,+,UN,INF,UNKN,IF \ AREA:nodat#BBBBBB:"NoData\\n" \ COMMENT:"Last update \\: `date|sed -e 's/:/\\\\:/g'`\r" done;done;