Aktuellen Datendurchsatz eines Linux Interface periodisch via UDP versenden

Zugegeben, auch wenn ich Linux nicht sonderlich mag, manchmal sind Lösungen damit extrem einfach zu erreichen. In diesem Fall musste ich mir rasch (also wie immer) den aktuellen Datendurchsatz eines Linux Interface zu einem anderen Rechner senden lassen. Das musste weder supergenau sein noch besonders gesichert übertragen werden. Also entschied ich mich für ein Shellskript, dass mir jede Sekunde anhand der Interfacestatistiken den aktuellen Wert der gesendeten oder empfangenen Bytes ausliest, daraus die Bytes pro Sekunde errechnet und das Ganze per UDP zusendet. Herrlich, dass auch mal was unkompliziert ist.

#!/bin/bash

if [ -z "$1" ]; then        
        echo usage: $0 network-interface, IP, Port [, TX or RX [,Divider]]
        echo
        exit
fi
 
echo "Running...Press <CTRL-C> to close"
 
while true
do
	RX1=`cat /sys/class/net/$1/statistics/rx_bytes`
	TX1=`cat /sys/class/net/$1/statistics/tx_bytes`
	sleep 1
	RX2=`cat /sys/class/net/$1/statistics/rx_bytes`
	TX2=`cat /sys/class/net/$1/statistics/tx_bytes`
	TXBPS=`expr $TX2 - $TX1`
	RXBPS=`expr $RX2 - $RX1`
	TXKBPS=`expr $TXBPS / ${5:-1024}`
	RXKBPS=`expr $RXBPS / ${5:-1024}`

	if [ "$4" == "tx" ]; then
		echo -n "$TXKBPS"| nc -u -q1 $2 $3
	else
		echo -n "$RXKBPS"| nc -u -q1 $2 $3
	fi       
done

Getestet habe ich das Ganze lediglich unter Mint und Ubuntu, keine Ahnung ob andere Linux Derivate die Interface Statistiken ebenso  unter /sys/class/net/ bereitstellen.

Kolja Engelmann

Technikfan, Freizeitprogrammierer, selbsternannter Toolking und vermutlich größter Drachenfan Deutschlands blogged hier die Lösungen zu IT-Problemen die ihm über den Weg laufen, kleine Softwaretools, nostalgische Anfälle und missbraucht das Ganze gern auch mal als privates Tagebuch und Fotoalbum.

Das könnte dich auch interessieren …

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert