[PATCH 2/2] show_info: Fix traffic statistics and add assignment without switch

Christian Dresel fff at chrisi01.de
So Aug 20 12:43:54 CEST 2017


Hi

kannst du mir mal kurz erklären was das Problem ist? Ich hab aktuell
leider nur einen Router zur Hand wo ich aufs WebUI drauf komme, dem dem
es sowohl davor als auch danach geht, seh also keinen Unterschied. Was
genau ist also der Grund das zu ändern?

mfg

Christian

On 10.08.2017 15:53, Adrian Schmutzler wrote:
> 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       | 105 ++++++++++++---------
>  1 file changed, 58 insertions(+), 47 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 fc7cffb..8677aad 100755
> --- a/src/packages/fff/fff-support/files/usr/sbin/show_info
> +++ b/src/packages/fff/fff-support/files/usr/sbin/show_info
> @@ -9,15 +9,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:')
> @@ -125,16 +126,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)"
>  
> @@ -149,7 +150,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"
> @@ -162,49 +163,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 "VLAN\s" | 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"
> 

-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 819 bytes
Beschreibung: OpenPGP digital signature
URL         : <http://lists.freifunk.net/pipermail/franken-dev-freifunk.net/attachments/20170820/6820bf78/attachment.sig>


Mehr Informationen über die Mailingliste franken-dev