[PATCH v2] show_info: Fix traffic statistics and add assignment without switch
Adrian Schmutzler
freifunk at adrianschmutzler.de
So Okt 15 18:16:29 CEST 2017
Changes in v2:
Fix VLAN grep to also work on 1043 V1.
Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
Tested-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
---
.../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. at 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. at 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"
--
2.7.4
Mehr Informationen über die Mailingliste franken-dev