[ munin ] Fritzbox traffic monitoring über die Fernwartungsschnittstelle

NetzwerkIch hatte ja bereits hier ein kleines Plugin für munin veröffentlicht, dass es ermöglicht den Datentransfer der Fritzbox in munin zu visualisieren.

Das Plugin ist soweit ganz nett,
es hat nur einen kleinen Haken:

Es funktioniert nur aus dem Fritzbox eigenen Netz.

Da nicht jeder einen Sever an der passenden Stelle stehen hat, oder man auch mal mehrere Fritzboxen mit einem Munin visualisieren möchte, habe ich das Plugin so modifiziert, dass es über die Fernwartungsschnittstelle der Fritzbox ebenfalls zugreifen kann.

Hier die neue Version:

#!/bin/sh
# 
# Plugin to monitor the load average on a system.
#
# Usage: Link or copy into /etc/munin/node.d/
#
# Parameters
#     env.load_warn < warning load >
#     env.load_crit < critical load >
#
# Magic markers (optional - only used by munin-config and some
# installation scripts):
#
#%# family=auto
#%# capabilities=autoconf
 
# If run with the "autoconf"-parameter, give our opinion on wether we
# should be run on this system or not. This is optinal, and only used by
# munin-config. In the case of this plugin, we should most probably
# always be included.
 
if [ "$1" = "autoconf" ]; then
        echo yes
        exit 0
fi
 
# If run with the "config"-parameter, give out information on how the
# graphs should look. 
 
if [ "$1" = "config" ]; then
#        LOAD_WARN=${load_warn:-10}
#        LOAD_CRIT=${load_crit:-120}
#
#       # The host name this plugin is for. (Can be overridden to have
#       # one machine answer for several)
#
#       # The title of the graph
        echo 'graph_title fritz.box dayly traffic'
#       # Arguments to "rrdtool graph". In this case, tell it that the
        # lower limit of the graph is '0', and that 1k=1000 (not 1024)
        echo 'graph_args --base 1000 -l 0'
        # The Y-axis label
        echo 'graph_vlabel Data'
        # We want Cur/Min/Avg/Max unscaled (i.e. 0.42 load instead of
        # 420 milliload)
        #echo 'graph_scale no'
        # Graph category. Defaults to 'other'
        echo 'graph_category network'
        # The fields. "label" is used in the legend. "label" is the only
        # required subfield. 
        echo 'load.label traffic'
        # These two are optional. They are only used if you have
        # configured your munin to tell a Nagios-server about any
        # problems
        #echo "load.warning $LOAD_WARN"
        #echo "load.critical $LOAD_CRIT"
        # This one is purely to add an explanation to the web page. The first
        # one is for the graph itself, while the second one is for the field
        # "load".
        echo 'graph_info The load average of the machine describes how many processes are in the run-queue (scheduled to run "immediately").'
        echo 'load.info Average load for the five minutes.'
 
        # Last, if run with the "config"-parameter, quit here (don't
        # display any data)
        exit 0
fi
 
# If not run with any parameters at all (or only unknown ones), do the
# real work - i.e. display the data. Almost always this will be
# "value" subfield for every data field.
 
 
###############################
#
# Change DATA here
#
###############################
 
FRITZBOX_FERNWARTUNG_NAME=''; #Benutzername für den Fernzugriff (ansonsten leer lassen)
FRITZBOX_FERNWARTUNG_PASSWORT=''; #Passwort für den Fernzugriff (ansonsten leer lassen)
FRITZBOX_PORT='80'; #Port eintragen (nur bei benutzung über Fernwartung ändern)
FRITZBOX_PROTOKOLL='http'; #bei Fernzugriff in https ändern
FRITZBOX_DOMAIN_NAME='fritz.box'; #Hier den Domain namen der Fritzbox eintragen
FRITZBOX_ADMIN_PASSWORD='pw'; # Hier Admin Password ersetzen, mit dem man sich unter fritz.box anmeldet
 
################################
#
# End change
#
################################
FRITZBOX_URL="$FRITZBOX_PROTOKOLL://";
if  [ "$FRITZBOX_FERNWARTUNG_NAME" != "" ]; then
        FRITZBOX_URL="$FRITZBOX_URL$FRITZBOX_FERNWARTUNG_NAME:$FRITZBOX_FERNWARTUNG_PASSWORT@";
fi
FRITZBOX_URL="$FRITZBOX_URL$FRITZBOX_DOMAIN_NAME:$FRITZBOX_PORT";
 
 
echo -n "load.value "
VAR=`wget -qO-  --no-check-certificate --post-data "getpage=../html/de/menus/menu2.html&var:pagename=inetstat&var:menu=internet&var:lang=de&errorpage=../html/index.html&login:command/password=$FRITZBOX_ADMIN_PASSWORD" $FRITZBOX_URL/cgi-bin/webcm | cat`;
INL=`echo "$VAR" | grep  "var inl = " |  sed 's/[a-zA-Z =]*\([0-9]*\).*/\1/'`;
OUT=`echo "$VAR" | grep "var outl = " | sed 's/[a-zA-Z =]*\([0-9]*\).*/\1/'`;
let RES=$INL+$OUT;
echo $RES;

So wie das Script da steht ist es für den Einsatz im Lokalennetz konfiguriert,
für den Einsatz über die Fernwartungsschnittstelle müssen die Werte zwischen “Change DATA here” und “End change” geändert werden.

Eine Beispielconfig für Fernzugriff sähe so aus:

FRITZBOX_FERNWARTUNG_NAME='admin'; #Benutzername für den Fernzugriff (ansonsten leer lassen)
FRITZBOX_FERNWARTUNG_PASSWORT='geheim'; #Passwort für den Fernzugriff (ansonsten leer lassen)
FRITZBOX_PORT='443'; #Port eintragen (nur bei benutzung über Fernwartung ändern)
FRITZBOX_PROTOKOLL='https'; #bei Fernzugriff in https ändern
FRITZBOX_DOMAIN_NAME='fritzbox.dyn-dns-server.org'; #Hier den Domain namen der Fritzbox eintragen
FRITZBOX_ADMIN_PASSWORD='pw'; # Hier Admin Password ersetzen, mit dem man sich unter fritz.box anmeldet

Das wars auch schon,
viel Spaß damit :)

This entry was posted in Pastes, Technik and tagged , , , , , . Bookmark the permalink.

One Response to [ munin ] Fritzbox traffic monitoring über die Fernwartungsschnittstelle

  1. Bruno says:

    moin,

    bei mir kommt dis:

    > debian:/usr/share/munin/plugins# ./fritz.box
    > ./fritz.box: 60: Syntax error: “(” unexpected (expecting “fi”)

Leave a Reply

Your email address will not be published. Required fields are marked *