Wireless Router Application Platform/netled.sh

Aus BraLUG-Wiki

Wechseln zu: Navigation, Suche


Ein Skript zur Überwachung von Netzwerkinterfaces, primär für das WRAP-Board, in gewissem Maße auch unter X mit den Keyboard-LEDs nutzbar.

#!/bin/bash

ifs=(
        [0]="eth0|wrap|2"
        [1]="ath0|wrap|3"
        )

n_ifs=${#ifs[@]}

function out_echo {
        echo "$1$2 "
}

function out_xled {
        if [ "$2" = "off" ]; then
                xset -led "$1"
        else
                xset led "$1"
        fi
}

function out_wrap {
        if [ "$1" = "2" ]; then
                if [ "$2" = "off" ]; then
                        # 1on 2off
                        echo "H" | dd of=/dev/port bs=1 count=1 seek=62464 2>/dev/null
                else
                        # 1on 2on
                        echo "A" | dd of=/dev/port bs=1 count=1 seek=62464 2>/dev/null
                fi
        elif [ "$1" = "3" ]; then
                if [ "$2" = "off" ]; then
                        # 3off
                        echo "L" | dd of=/dev/port bs=1 count=1 seek=62466 2>/dev/null
                else
                        echo "A" | dd of=/dev/port bs=1 count=1 seek=62466 2>/dev/null
                fi
        fi
}

while true; do
        i_if=0

        while [ $i_if -lt $n_ifs ]; do
                if=`echo "${ifs[$i_if]}" | cut -d\| -f 1`
                func=`echo "${ifs[$i_if]}" | cut -d\| -f 2`
                num=`echo "${ifs[$i_if]}" | cut -d\| -f 3`

                line=`fgrep "$if:" /proc/net/dev | sed -e 's/^[^:]*://'`
                if [ ! -z "$line" ]; then
                        #echo "$line"

                        pkts=`echo "$line" | awk '{ print $2 }'`
                        if [ "$pkts" != "${packets[$i_if]}" ]; then
                                packets[$i_if]="$pkts"
                                out_$func "$num" "on"
                        else
                                out_$func "$num" "off"
                        fi
                fi

                i_if=$(($i_if + 1))
        done
        LC_ALL=C sleep 0.1
done
'Persönliche Werkzeuge