#!/bin/bash path="${1}/modules/net"; . $path/include.sh; # ------------------------------------------ # Remplissage de la base de données for i in $ifaces; { # On calcule la moyenne sur 5 minutes : TX="$(cat /proc/net/dev|grep $i|cut -d":" -f2|tr -s " "|cut -d " " -f9)"; RX="$(cat /proc/net/dev|grep $i|cut -d":" -f2|tr -s " "|cut -d " " -f1)"; TXp="$(cat /proc/net/dev|grep $i|cut -d":" -f2|tr -s " "|cut -d " " -f10)"; RXp="$(cat /proc/net/dev|grep $i|cut -d":" -f2|tr -s " "|cut -d " " -f2)"; # 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/stats.$i.tmp } # On remplit la base de données plop="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ésent case $2 in week) time_name="7 days"; average="30"; prefix="weekly"; time_warp="-s-604800";; month) time_name="30 days"; average="30"; prefix="monthly"; time_warp="-s-2592000";; year) time_name="one year"; average="30"; prefix="yearly"; time_warp="-s-31536000";; day) time_name="24 hours"; average="5"; prefix="daily"; time_warp="";; esac # Génération réelle des graphes if [ -n "$prefix" ]; then for i in $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 -h${g_height} -w${g_width} -l0 ${time_warp} -v ${j}/s -E \ -c "BACK#${out_colors[0]}" -c "SHADEA#${out_colors[1]}" -c "SHADEB#${out_colors[2]}" \ -c "FONT#${out_colors[3]}" -c "CANVAS#${out_colors[4]}" -c "GRID#${out_colors[5]}" \ -c "MGRID#${out_colors[6]}" -c "FRAME#${out_colors[7]}" -c "ARROW#${out_colors[8]}" \ DEF:TX2=$rrdfile:${j}TX${i}:AVERAGE \ DEF:RX=$rrdfile:${j}RX${i}:AVERAGE \ CDEF:TX=TX2,-1,\* \ CDEF:TX_2=TX,0.98,\* AREA:TX_2#${get_in[0]}:"${i} ${j} out/sec" \ GPRINT:TX:MAX:"Max\\: %2.lf ${j}/s" \ GPRINT:TX:AVERAGE:"Average\\: %2.lf ${j}/s" \ GPRINT:TX:LAST:"Current\\: %2.lf ${j}/s \\n" \ CDEF:TX_10=TX,0.90,\* AREA:TX_10#${get_in[1]} \ CDEF:TX_15=TX,0.85,\* AREA:TX_15#${get_in[2]} \ CDEF:TX_20=TX,0.80,\* AREA:TX_20#${get_in[3]} \ CDEF:TX_25=TX,0.75,\* AREA:TX_25#${get_in[4]} \ CDEF:TX_30=TX,0.70,\* AREA:TX_30#${get_in[5]} \ CDEF:TX_35=TX,0.65,\* AREA:TX_35#${get_in[6]} \ CDEF:TX_40=TX,0.60,\* AREA:TX_40#${get_in[7]} \ CDEF:TX_45=TX,0.55,\* AREA:TX_45#${get_in[8]} \ CDEF:TX_50=TX,0.50,\* AREA:TX_50#${get_in[9]} \ CDEF:TX_55=TX,0.45,\* AREA:TX_55#${get_in[10]} \ CDEF:TX_60=TX,0.40,\* AREA:TX_60#${get_in[11]} \ CDEF:TX_65=TX,0.35,\* AREA:TX_65#${get_in[12]} \ CDEF:TX_70=TX,0.30,\* AREA:TX_70#${get_in[13]} \ CDEF:TX_75=TX,0.25,\* AREA:TX_75#${get_in[14]} \ CDEF:TX_80=TX,0.20,\* AREA:TX_80#${get_in[15]} \ CDEF:TX_85=TX,0.15,\* AREA:TX_85#${get_in[16]} \ CDEF:TXof=TX2,`eval echo '${'lim_${i}_${j}'[0]}'`,GT,TX,0,IF \ CDEF:TXof_2=TXof,0.98,\* AREA:TXof_2#${get_of[0]} \ CDEF:TXof_10=TXof,0.90,\* AREA:TXof_10#${get_of[1]} \ CDEF:TXof_15=TXof,0.85,\* AREA:TXof_15#${get_of[2]} \ CDEF:TXof_20=TXof,0.80,\* AREA:TXof_20#${get_of[3]} \ CDEF:TXof_25=TXof,0.75,\* AREA:TXof_25#${get_of[4]} \ CDEF:TXof_30=TXof,0.70,\* AREA:TXof_30#${get_of[5]} \ CDEF:TXof_35=TXof,0.65,\* AREA:TXof_35#${get_of[6]} \ CDEF:TXof_40=TXof,0.60,\* AREA:TXof_40#${get_of[7]} \ CDEF:TXof_45=TXof,0.55,\* AREA:TXof_45#${get_of[8]} \ CDEF:TXof_50=TXof,0.50,\* AREA:TXof_50#${get_of[9]} \ CDEF:TXof_55=TXof,0.45,\* AREA:TXof_55#${get_of[10]} \ CDEF:TXof_60=TXof,0.40,\* AREA:TXof_60#${get_of[11]} \ CDEF:TXof_65=TXof,0.35,\* AREA:TXof_65#${get_of[12]} \ CDEF:TXof_70=TXof,0.30,\* AREA:TXof_70#${get_of[13]} \ CDEF:TXof_75=TXof,0.25,\* AREA:TXof_75#${get_of[14]} \ CDEF:TXof_80=TXof,0.20,\* AREA:TXof_80#${get_of[15]} \ CDEF:TXof_85=TXof,0.15,\* AREA:TXof_85#${get_of[16]} \ CDEF:RX_2=RX,0.98,\* AREA:RX_2#${get_out[0]}:"${i} ${j} in/sec " \ GPRINT:RX:MAX:"Max\\: %2.lf ${j}/s" \ GPRINT:RX:AVERAGE:"Average\\: %2.lf ${j}/s" \ GPRINT:RX:LAST:"Current\\: %2.lf ${j}/s\\n" \ CDEF:RX_10=RX,0.90,\* AREA:RX_10#${get_out[1]} \ CDEF:RX_15=RX,0.85,\* AREA:RX_15#${get_out[2]} \ CDEF:RX_20=RX,0.80,\* AREA:RX_20#${get_out[3]} \ CDEF:RX_25=RX,0.75,\* AREA:RX_25#${get_out[4]} \ CDEF:RX_30=RX,0.70,\* AREA:RX_30#${get_out[5]} \ CDEF:RX_35=RX,0.65,\* AREA:RX_35#${get_out[6]} \ CDEF:RX_40=RX,0.60,\* AREA:RX_40#${get_out[7]} \ CDEF:RX_45=RX,0.55,\* AREA:RX_45#${get_out[8]} \ CDEF:RX_50=RX,0.50,\* AREA:RX_50#${get_out[9]} \ CDEF:RX_55=RX,0.45,\* AREA:RX_55#${get_out[10]} \ CDEF:RX_60=RX,0.40,\* AREA:RX_60#${get_out[11]} \ CDEF:RX_65=RX,0.35,\* AREA:RX_65#${get_out[12]} \ CDEF:RX_70=RX,0.30,\* AREA:RX_70#${get_out[13]} \ CDEF:RX_75=RX,0.25,\* AREA:RX_75#${get_out[14]} \ CDEF:RX_80=RX,0.20,\* AREA:RX_80#${get_out[15]} \ CDEF:RX_85=RX,0.15,\* AREA:RX_85#${get_out[16]} \ CDEF:RXof=RX,`eval echo '${'lim_${i}_${j}'[1]}'`,GT,RX,0,IF \ CDEF:RXof_2=RXof,0.98,\* AREA:RXof_2#${get_of[0]} \ CDEF:RXof_10=RXof,0.90,\* AREA:RXof_10#${get_of[1]} \ CDEF:RXof_15=RXof,0.85,\* AREA:RXof_15#${get_of[2]} \ CDEF:RXof_20=RXof,0.80,\* AREA:RXof_20#${get_of[3]} \ CDEF:RXof_25=RXof,0.75,\* AREA:RXof_25#${get_of[4]} \ CDEF:RXof_30=RXof,0.70,\* AREA:RXof_30#${get_of[5]} \ CDEF:RXof_35=RXof,0.65,\* AREA:RXof_35#${get_of[6]} \ CDEF:RXof_40=RXof,0.60,\* AREA:RXof_40#${get_of[7]} \ CDEF:RXof_45=RXof,0.55,\* AREA:RXof_45#${get_of[8]} \ CDEF:RXof_50=RXof,0.50,\* AREA:RXof_50#${get_of[9]} \ CDEF:RXof_55=RXof,0.45,\* AREA:RXof_55#${get_of[10]} \ CDEF:RXof_60=RXof,0.40,\* AREA:RXof_60#${get_of[11]} \ CDEF:RXof_65=RXof,0.35,\* AREA:RXof_65#${get_of[12]} \ CDEF:RXof_70=RXof,0.30,\* AREA:RXof_70#${get_of[13]} \ CDEF:RXof_75=RXof,0.25,\* AREA:RXof_75#${get_of[14]} \ CDEF:RXof_80=RXof,0.20,\* AREA:RXof_80#${get_of[15]} \ CDEF:RXof_85=RXof,0.15,\* AREA:RXof_85#${get_of[16]} \ LINE1:0#FFFFFF \ CDEF:nodat2=TX,RX,+,UN,NEGINF,UNKN,IF \ AREA:nodat2#444444\ CDEF:nodat=TX,RX,+,UN,INF,UNKN,IF \ AREA:nodat#444444:"NoData\\n" \ COMMENT:"Last update \\: `date|sed -e 's/:/\\\\:/g'`\r" done; done; fi;