From patchwork Sun Oct 15 16:16:29 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [v2] show_info: Fix traffic statistics and add assignment without switch From: Adrian Schmutzler X-Patchwork-Id: 593 Message-Id: <1508084189-56797-1-git-send-email-freifunk@adrianschmutzler.de> To: franken-dev@freifunk.net Date: Sun, 15 Oct 2017 18:16:29 +0200 Changes in v2: Fix VLAN grep to also work on 1043 V1. Signed-off-by: Adrian Schmutzler Tested-by: Adrian Schmutzler --- .../fff/fff-support/files/usr/sbin/show_info | 107 ++++++++++++--------- 1 file changed, 59 insertions(+), 48 deletions(-) diff --git a/src/packages/fff/fff-support/files/usr/sbin/show_info b/src/packages/fff/fff-support/files/usr/sbin/show_info index 3914391..1e7c498 100755 --- a/src/packages/fff/fff-support/files/usr/sbin/show_info +++ b/src/packages/fff/fff-support/files/usr/sbin/show_info @@ -8,15 +8,16 @@ HOSTNAME=$(uci -q get 'system.@system[0].hostname') human_bytes() { while read B ; do - [ $B -lt 1024 ] && echo ${B} B && break + [ $B -lt 1024 ] && echo ${B} B && return KB=$(((B+512)/1024)) - [ $KB -lt 1024 ] && echo ${KB} KB && break + [ $KB -lt 1024 ] && echo ${KB} KB && return MB=$(((KB+512)/1024)) - [ $MB -lt 1024 ] && echo ${MB} MB && break + [ $MB -lt 1024 ] && echo ${MB} MB && return GB=$(((MB+512)/1024)) - [ $GB -lt 1024 ] && echo ${GB} GB && break - echo $(((GB+512)/1024)) TB + [ $GB -lt 1024 ] && echo ${GB} GB && return + echo $(((GB+512)/1024)) TB && return done + echo "-" } format_state() { batmanports=$(swconfig dev switch0 vlan 3 show | grep 'ports:') @@ -50,7 +51,7 @@ format_port() { format_state "${port}" printf '%-26s' "@ $speed $duplex " - swconfig dev switch0 show | grep "VLAN\s" | while read line ; do + swconfig dev switch0 show | grep -E "VLAN\s[0-9]+:[ \t]*$" | while read line ; do vid=$(echo "$line" | sed 's/.*VLAN \([^:]*\).*/\1/') vports=$(swconfig dev switch0 vlan "$vid" show | grep 'ports:') if echo "$vports" | grep -q "${port}t" ; then @@ -124,16 +125,16 @@ echo "Fastd Version: $(fastd --version 2> /dev/null | cut -d' ' -f 2)" echo "" echo "-> Netz: FREIFUNK" echo "Nutzer: $(cat /sys/kernel/debug/batman_adv/bat0/transtable_local 2> /dev/null | grep -c 'W')" -echo "Empfangen: $(cat /sys/class/net/br-mesh/statistics/rx_bytes | human_bytes)" -echo "Gesendet: $(cat /sys/class/net/br-mesh/statistics/tx_bytes | human_bytes)" +echo "Empfangen: $(cat /sys/class/net/br-mesh/statistics/rx_bytes 2> /dev/null | human_bytes)" +echo "Gesendet: $(cat /sys/class/net/br-mesh/statistics/tx_bytes 2> /dev/null | human_bytes)" echo "IPv4 Adressen: $(addr 4 br-mesh)" echo "IPv6 Adressen: $(addr 6 br-mesh)" echo "" echo "-> Netz: WAN" echo "Internet vorhanden: ${internet_active}" -echo "Empfangen: $(cat /sys/class/net/${wanif}/statistics/rx_bytes | human_bytes)" -echo "Gesendet: $(cat /sys/class/net/${wanif}/statistics/tx_bytes | human_bytes)" +echo "Empfangen: $(cat /sys/class/net/${wanif}/statistics/rx_bytes 2> /dev/null | human_bytes)" +echo "Gesendet: $(cat /sys/class/net/${wanif}/statistics/tx_bytes 2> /dev/null | human_bytes)" echo "IPv4 Adressen: $(addr 4 $wanif)" echo "IPv6 Adressen: $(addr 6 $wanif)" @@ -148,7 +149,7 @@ echo "E-Mail Adresse: $(uci -q get 'system.@system[0].contact')" echo "" echo "-> BITRATEN-BEGRENZUNG" -if [ "$(uci -q get 'simple-tc.example.enabled')" == "1" ] ; then +if [ "$(uci -q get 'simple-tc.example.enabled')" = "1" ] ; then echo "Aktiv: ja" else echo "Aktiv: nein" @@ -161,49 +162,59 @@ if grep -q 'PORTORDER=' /etc/network.$board_name ; then fi echo "" -if [ -n "$portorder" ] ; then - echo "-> SWITCH (tatsaechliche Portreihenfolge)" -else - echo "-> SWITCH (interne logische Portreihenfolge)" -fi +if swconfig list | grep -q switch0 ; then + if [ -n "$portorder" ] ; then + echo "-> SWITCH (tatsaechliche Portreihenfolge)" + else + echo "-> SWITCH (interne logische Portreihenfolge)" + fi -printf '%-54s' "VLAN-IDs:" -swconfig dev switch0 show | grep "VLAN\s" | while read line ; do - vid=$(echo "$line" | sed 's/.*VLAN \([^:]*\).*/\1/') - printf '%-2s ' "$vid" -done -echo "" -echo "" + printf '%-54s' "VLAN-IDs:" + swconfig dev switch0 show | grep -E "VLAN\s[0-9]+:[ \t]*$" | while read line ; do + vid=$(echo "$line" | sed 's/.*VLAN \([^:]*\).*/\1/') + printf '%-2s ' "$vid" + done + echo "" + echo "" -if [ ! "$(awk -F= '/WANDEV=/ { print $2 }' /etc/network.$board_name)" = "$(awk -F= '/SWITCHDEV=/ { print $2 }' /etc/network.$board_name)" ] ; then - wanif=$(uci -q get network.wan.ifname) - link=$(cat /sys/class/net/${wanif}/operstate) - if [ "$link" = "up" ] ; then - speed="connected" - else - speed="no link" + if [ ! "$(awk -F= '/WANDEV=/ { print $2 }' /etc/network.$board_name)" = "$(awk -F= '/SWITCHDEV=/ { print $2 }' /etc/network.$board_name)" ] ; then + wanif=$(uci -q get network.wan.ifname) + link=$(cat /sys/class/net/${wanif}/operstate) + if [ "$link" = "up" ] ; then + speed="connected" + else + speed="no link" + fi + printf '%-10s%-5s%-13s%s\n' "WAN-Port: " "${link} " "- WAN " "@ $speed" fi - printf '%-10s%-5s%-13s%s\n' "WAN-Port: " "${link} " "- WAN " "@ $speed" -fi -for internalport in $portorder -do - line=$(swconfig dev switch0 port "$internalport" show | tr -d '\n' | tr -d '\t') - port=$(echo "$line" | sed 's/.* port:\([^ ]*\) .*/\1/') - printf '%-10s' "Port #${port}: " - format_port "${line}" -done -echo "" + for internalport in $portorder + do + line=$(swconfig dev switch0 port "$internalport" show | tr -d '\n' | tr -d '\t') + port=$(echo "$line" | sed 's/.* port:\([^ ]*\) .*/\1/') + printf '%-10s' "Port #${port}: " + format_port "${line}" + done + echo "" -swconfig dev switch0 show | grep "\t*link:" | while read line ; do - line=$(echo "$line" | tr -d '\n' | tr -d '\t') - port=$(echo "$line" | sed 's/.* port:\([^ ]*\) .*/\1/') - if echo "$portorder" | grep -q "$port" ; then - continue + swconfig dev switch0 show | grep "\t*link:" | while read line ; do + line=$(echo "$line" | tr -d '\n' | tr -d '\t') + port=$(echo "$line" | sed 's/.* port:\([^ ]*\) .*/\1/') + if echo "$portorder" | grep -q "$port" ; then + continue + fi + printf '%-10s' "Port #${port}: " + format_port "${line}" + done +else + echo "-> PORT ASSIGNMENT" + if grep -q "ONE_PORT" "/etc/network.$board_name" || grep -q "ETHPORT" "/etc/network.$board_name" ; then + # Device has a port set by $ETHMODE + . /etc/network.mode + . /etc/network.config + echo "Port Modus: $ETHMODE" fi - printf '%-10s' "Port #${port}: " - format_port "${line}" -done +fi echo "" echo "END"