All pastes #72009 Raw Edit

ZEPsikopat

public shellscript v1 · immutable
#72009 ·published 2006-06-26 13:28 UTC
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;