Für das LED Panel beim CCC Kassel fand ich vor laaaaanger Zeit mal eine coole Idee: den Traffic vom Router darauf darstellen. Wie ich es auf dem LED Panel darstelle, stand gar nicht im Vordergrund. Die Hauptsache war erst mal, dass ich irgendwie an den aktuellen Traffic komme bzw. diesen messen kann. Es gibt dutzende tolle Programme wie vnstat, oder bmon. Alle bieten allerdings nur ein interaktives Interface. Ich brauche die Daten allerdings in einem Script. Heißt, ich möchte ein Programm aufrufen und die aktuellen kbit/s für Down- und Upload bekommen.

Nach 1-2h ätzender Suche im Web, fand ich endlich ein super simples Bash Script. Dieses liest die entsprechenden Werte aus Dateien im System aus, die automatisch befüllt werden. Zumindest so die grobe Erklärung. Diese lese ich aus, vergleich sie mit dem Wert des letzten Durchlaufes und habe quasi den Live-Traffic. Diese Daten gebe ich via Netcat im Netzwerk frei und ich kann die Daten von überall auslesen und verarbeiten.

#!/bin/bash
IF=$1
if [ -z "$IF" ]; then
    IF=`ls -1 /sys/class/net/ | head -1`
fi
RXPREV=-1
TXPREV=-1
while [ 1 == 1 ] ; do
    RX=`cat /sys/class/net/${IF}/statistics/rx_bytes`
    TX=`cat /sys/class/net/${IF}/statistics/tx_bytes`
    if [ $RXPREV -ne -1 ] ; then
        let BWRX="($RX-$RXPREV)/1000"
        let BWTX="($TX-$TXPREV)/1000"
        echo "$BWRX:$BWTX"
    fi
    RXPREV=$RX
    TXPREV=$TX
    sleep 1
done | ncat -l -k -p 54321