[v2] fff-support: Provide shell script with output similar to WebUI

Submitted by Adrian Schmutzler on July 30, 2017, 3:36 p.m.

Details

Message ID 1501428962-3018-1-git-send-email-freifunk@adrianschmutzler.de
State Accepted
Headers show

Commit Message

Adrian Schmutzler July 30, 2017, 3:36 p.m.
Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>

Tested-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
---
 .../fff/fff-support/files/usr/sbin/show_info       | 123 +++++++++++++++++++++
 1 file changed, 123 insertions(+)
 create mode 100755 src/packages/fff/fff-support/files/usr/sbin/show_info

Patch hide | download patch | download mbox

diff --git a/src/packages/fff/fff-support/files/usr/sbin/show_info b/src/packages/fff/fff-support/files/usr/sbin/show_info
new file mode 100755
index 0000000..17fbb9f
--- /dev/null
+++ b/src/packages/fff/fff-support/files/usr/sbin/show_info
@@ -0,0 +1,123 @@ 
+#!/bin/sh
+
+. /etc/community.cfg
+. /etc/firmware_release
+
+HOSTNAME=$(uci -q get 'system.@system[0].hostname')
+
+human_bytes() {
+	while read B ; do
+		[ $B -lt 1024 ] && echo ${B} B && break
+		KB=$(((B+512)/1024))
+		[ $KB -lt 1024 ] && echo ${KB} KB && break
+		MB=$(((KB+512)/1024))
+		[ $MB -lt 1024 ] && echo ${MB} MB && break
+		GB=$(((MB+512)/1024))
+		[ $GB -lt 1024 ] && echo ${GB} GB && break
+		echo $(((GB+512)/1024)) TB
+	done
+}
+
+if pidof fastd >/dev/null ; then
+	vpn_active="aktiv"
+else
+	vpn_active="inaktiv"
+fi
+if grep -q '1' /sys/class/net/l2tp*/carrier 2> /dev/null ; then
+	l2tp_active="aktiv"
+else
+	l2tp_active="inaktiv"
+fi
+up="$(uptime)"
+load="${up##*:}"
+uptime="${up%%,*}"
+uptime="${uptime##*up}"
+
+#include OpenWrt version
+. /etc/openwrt_release
+. /etc/firmware_release
+
+addr() {
+	local addr="$(ip -$1 address show dev $2 2>/dev/null | tr '/' ' '| awk '/inet/{ printf("%s ", $2); }')"
+	echo "${addr:--}"
+}
+default_gw() {
+	ip -$1 route list 0/0 dev $2 2> /dev/null | awk '{print($3); exit(0)}'
+}
+wanif=$(uci -q get network.wan.ifname)
+if [ -n "$(default_gw 4 $wanif)" -o  -n "$(default_gw 6 $wanif)" ]; then
+	internet_active="Ja"
+else
+	internet_active="Nein"
+fi
+
+echo ""
+echo "Router configuration overview:"
+
+echo ""
+echo "-> SYSTEM"
+echo "Name: ${HOSTNAME}"
+echo "Modell: $(cat /tmp/sysinfo/model 2>/dev/null)"
+echo "MAC-Adresse: $(cat /sys/class/net/br-mesh/address)"
+echo "Bekannte Knoten: $((`cat /sys/kernel/debug/batman_adv/bat0/transtable_global | grep '^ [^ ]' | cut -b 39-55 | sort | uniq | wc -l 2>/dev/null`+1))"
+echo "Nachbarknoten: $(cat /sys/kernel/debug/batman_adv/bat0/originators | grep '^[0-9a-f]' | cut -b 37-53 | sort | uniq | wc -l 2>/dev/null)"
+echo "VPN via fastd: ${vpn_active}"
+echo "VPN via L2TP: ${l2tp_active}"
+echo "Laufzeit: ${uptime}"
+echo "Auslastung: ${load}"
+echo "Uhrzeit: $(date)"
+
+echo ""
+echo "-> SOFTWARE"
+echo "Firmware Version: ${FIRMWARE_VERSION}"
+echo "LEDE Version: ${DISTRIB_DESCRIPTION}"
+echo "Kernel Version: $(uname -s -m -r)"
+echo "Batman-Adv Version: $(cat /sys/module/batman_adv/version 2>/dev/null)"
+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 "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 "IPv4 Adressen: $(addr 4 $wanif)"
+echo "IPv6 Adressen: $(addr 6 $wanif)"
+
+echo ""
+echo "-> EINSTELLUNGEN"
+echo "Knotenname: ${HOSTNAME}"
+echo "Knotenbeschreibung: $(uci -q get 'system.@system[0].description')"
+echo "GPS Breitengrad: $(uci -q get 'system.@system[0].latitude')"
+echo "GPS Laengengrad: $(uci -q get 'system.@system[0].longitude')"
+echo "Standortbeschreibung: $(uci -q get 'system.@system[0].position_comment')"
+echo "E-Mail Adresse: $(uci -q get 'system.@system[0].contact')"
+
+echo ""
+echo "-> SWITCH"
+if swconfig list | grep -q switch0 ; then
+	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/')
+		link=$(echo "$line" | sed 's/.* link:\([^ ]*\).*/\1/')
+		if [ "$link" == "up" ] ; then
+			speed=$(echo "$line" | sed 's/.* speed:\([^ ]*\).*/\1/')
+			duplex=$(echo "$line" | sed 's/.* \([^ ]*-duplex\).*/\1/')
+		else
+			speed="no link"
+			duplex=""
+		fi
+		port="Port ${port}"
+		echo "${port}: ${link} @ $speed $duplex"
+	done
+fi
+
+echo ""
+echo "END"

Comments

Christian Dresel Aug. 20, 2017, 10:35 a.m.
Hi

hat das Script irgendwo einen weiteren Zweck (also wird für irgendwas
weiteres verwendet) oder dient es nur dafür, das man auf der Konsole die
Infos schön & schnell und einfach einsammeln kann? Wäre vllt. für
Diagnosezwecke ganz sinnvoll wenn auf der ML wieder kommt "geht nicht"
dann können sie das Script laufen lassen und die Ausgabe C&P. Dazu
fehlen aber u.U. noch ein paar Informationen (sepzeill rund um Batman,
sind Nodes in Reichweite? Ist ein Gateway in Reichweite,...) die man
evtl. später mal hinzufügen könnte.

Prinzipiell finde ich es aber schick auch wenn ich es wohl kaum brauche
sind halt wieder knapp 4kbyte Speicher aber ich glaub darauf kommt es
aktuell (noch...?) nicht an und wenn schon irgendwann werden die 4MB
Geräte eh sterben also:

Reviewed-by: Christian Dresel <fff@chrisi01.de>

mfg

Christian

On 30.07.2017 17:36, Adrian Schmutzler wrote:
> Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
> 
> Tested-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
> ---
>  .../fff/fff-support/files/usr/sbin/show_info       | 123 +++++++++++++++++++++
>  1 file changed, 123 insertions(+)
>  create mode 100755 src/packages/fff/fff-support/files/usr/sbin/show_info
> 
> diff --git a/src/packages/fff/fff-support/files/usr/sbin/show_info b/src/packages/fff/fff-support/files/usr/sbin/show_info
> new file mode 100755
> index 0000000..17fbb9f
> --- /dev/null
> +++ b/src/packages/fff/fff-support/files/usr/sbin/show_info
> @@ -0,0 +1,123 @@
> +#!/bin/sh
> +
> +. /etc/community.cfg
> +. /etc/firmware_release
> +
> +HOSTNAME=$(uci -q get 'system.@system[0].hostname')
> +
> +human_bytes() {
> +	while read B ; do
> +		[ $B -lt 1024 ] && echo ${B} B && break
> +		KB=$(((B+512)/1024))
> +		[ $KB -lt 1024 ] && echo ${KB} KB && break
> +		MB=$(((KB+512)/1024))
> +		[ $MB -lt 1024 ] && echo ${MB} MB && break
> +		GB=$(((MB+512)/1024))
> +		[ $GB -lt 1024 ] && echo ${GB} GB && break
> +		echo $(((GB+512)/1024)) TB
> +	done
> +}
> +
> +if pidof fastd >/dev/null ; then
> +	vpn_active="aktiv"
> +else
> +	vpn_active="inaktiv"
> +fi
> +if grep -q '1' /sys/class/net/l2tp*/carrier 2> /dev/null ; then
> +	l2tp_active="aktiv"
> +else
> +	l2tp_active="inaktiv"
> +fi
> +up="$(uptime)"
> +load="${up##*:}"
> +uptime="${up%%,*}"
> +uptime="${uptime##*up}"
> +
> +#include OpenWrt version
> +. /etc/openwrt_release
> +. /etc/firmware_release
> +
> +addr() {
> +	local addr="$(ip -$1 address show dev $2 2>/dev/null | tr '/' ' '| awk '/inet/{ printf("%s ", $2); }')"
> +	echo "${addr:--}"
> +}
> +default_gw() {
> +	ip -$1 route list 0/0 dev $2 2> /dev/null | awk '{print($3); exit(0)}'
> +}
> +wanif=$(uci -q get network.wan.ifname)
> +if [ -n "$(default_gw 4 $wanif)" -o  -n "$(default_gw 6 $wanif)" ]; then
> +	internet_active="Ja"
> +else
> +	internet_active="Nein"
> +fi
> +
> +echo ""
> +echo "Router configuration overview:"
> +
> +echo ""
> +echo "-> SYSTEM"
> +echo "Name: ${HOSTNAME}"
> +echo "Modell: $(cat /tmp/sysinfo/model 2>/dev/null)"
> +echo "MAC-Adresse: $(cat /sys/class/net/br-mesh/address)"
> +echo "Bekannte Knoten: $((`cat /sys/kernel/debug/batman_adv/bat0/transtable_global | grep '^ [^ ]' | cut -b 39-55 | sort | uniq | wc -l 2>/dev/null`+1))"
> +echo "Nachbarknoten: $(cat /sys/kernel/debug/batman_adv/bat0/originators | grep '^[0-9a-f]' | cut -b 37-53 | sort | uniq | wc -l 2>/dev/null)"
> +echo "VPN via fastd: ${vpn_active}"
> +echo "VPN via L2TP: ${l2tp_active}"
> +echo "Laufzeit: ${uptime}"
> +echo "Auslastung: ${load}"
> +echo "Uhrzeit: $(date)"
> +
> +echo ""
> +echo "-> SOFTWARE"
> +echo "Firmware Version: ${FIRMWARE_VERSION}"
> +echo "LEDE Version: ${DISTRIB_DESCRIPTION}"
> +echo "Kernel Version: $(uname -s -m -r)"
> +echo "Batman-Adv Version: $(cat /sys/module/batman_adv/version 2>/dev/null)"
> +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 "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 "IPv4 Adressen: $(addr 4 $wanif)"
> +echo "IPv6 Adressen: $(addr 6 $wanif)"
> +
> +echo ""
> +echo "-> EINSTELLUNGEN"
> +echo "Knotenname: ${HOSTNAME}"
> +echo "Knotenbeschreibung: $(uci -q get 'system.@system[0].description')"
> +echo "GPS Breitengrad: $(uci -q get 'system.@system[0].latitude')"
> +echo "GPS Laengengrad: $(uci -q get 'system.@system[0].longitude')"
> +echo "Standortbeschreibung: $(uci -q get 'system.@system[0].position_comment')"
> +echo "E-Mail Adresse: $(uci -q get 'system.@system[0].contact')"
> +
> +echo ""
> +echo "-> SWITCH"
> +if swconfig list | grep -q switch0 ; then
> +	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/')
> +		link=$(echo "$line" | sed 's/.* link:\([^ ]*\).*/\1/')
> +		if [ "$link" == "up" ] ; then
> +			speed=$(echo "$line" | sed 's/.* speed:\([^ ]*\).*/\1/')
> +			duplex=$(echo "$line" | sed 's/.* \([^ ]*-duplex\).*/\1/')
> +		else
> +			speed="no link"
> +			duplex=""
> +		fi
> +		port="Port ${port}"
> +		echo "${port}: ${link} @ $speed $duplex"
> +	done
> +fi
> +
> +echo ""
> +echo "END"
>
Tim Niemeyer Aug. 20, 2017, 12:21 p.m.
Hi

Applied.

Tim

Am Sonntag, den 20.08.2017, 12:35 +0200 schrieb Christian Dresel:
> Hi
> 
> hat das Script irgendwo einen weiteren Zweck (also wird für irgendwas
> weiteres verwendet) oder dient es nur dafür, das man auf der Konsole
> die
> Infos schön & schnell und einfach einsammeln kann? Wäre vllt. für
> Diagnosezwecke ganz sinnvoll wenn auf der ML wieder kommt "geht
> nicht"
> dann können sie das Script laufen lassen und die Ausgabe C&P. Dazu
> fehlen aber u.U. noch ein paar Informationen (sepzeill rund um
> Batman,
> sind Nodes in Reichweite? Ist ein Gateway in Reichweite,...) die man
> evtl. später mal hinzufügen könnte.
> 
> Prinzipiell finde ich es aber schick auch wenn ich es wohl kaum
> brauche
> sind halt wieder knapp 4kbyte Speicher aber ich glaub darauf kommt es
> aktuell (noch...?) nicht an und wenn schon irgendwann werden die 4MB
> Geräte eh sterben also:
> 
> Reviewed-by: Christian Dresel <fff@chrisi01.de>
> 
> mfg
> 
> Christian
> 
> On 30.07.2017 17:36, Adrian Schmutzler wrote:
> > Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
> > 
> > Tested-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
> > ---
> >  .../fff/fff-support/files/usr/sbin/show_info       | 123
> > +++++++++++++++++++++
> >  1 file changed, 123 insertions(+)
> >  create mode 100755 src/packages/fff/fff-
> > support/files/usr/sbin/show_info
> > 
> > diff --git a/src/packages/fff/fff-support/files/usr/sbin/show_info
> > b/src/packages/fff/fff-support/files/usr/sbin/show_info
> > new file mode 100755
> > index 0000000..17fbb9f
> > --- /dev/null
> > +++ b/src/packages/fff/fff-support/files/usr/sbin/show_info
> > @@ -0,0 +1,123 @@
> > +#!/bin/sh
> > +
> > +. /etc/community.cfg
> > +. /etc/firmware_release
> > +
> > +HOSTNAME=$(uci -q get 'system.@system[0].hostname')
> > +
> > +human_bytes() {
> > +	while read B ; do
> > +		[ $B -lt 1024 ] && echo ${B} B && break
> > +		KB=$(((B+512)/1024))
> > +		[ $KB -lt 1024 ] && echo ${KB} KB && break
> > +		MB=$(((KB+512)/1024))
> > +		[ $MB -lt 1024 ] && echo ${MB} MB && break
> > +		GB=$(((MB+512)/1024))
> > +		[ $GB -lt 1024 ] && echo ${GB} GB && break
> > +		echo $(((GB+512)/1024)) TB
> > +	done
> > +}
> > +
> > +if pidof fastd >/dev/null ; then
> > +	vpn_active="aktiv"
> > +else
> > +	vpn_active="inaktiv"
> > +fi
> > +if grep -q '1' /sys/class/net/l2tp*/carrier 2> /dev/null ; then
> > +	l2tp_active="aktiv"
> > +else
> > +	l2tp_active="inaktiv"
> > +fi
> > +up="$(uptime)"
> > +load="${up##*:}"
> > +uptime="${up%%,*}"
> > +uptime="${uptime##*up}"
> > +
> > +#include OpenWrt version
> > +. /etc/openwrt_release
> > +. /etc/firmware_release
> > +
> > +addr() {
> > +	local addr="$(ip -$1 address show dev $2 2>/dev/null | tr
> > '/' ' '| awk '/inet/{ printf("%s ", $2); }')"
> > +	echo "${addr:--}"
> > +}
> > +default_gw() {
> > +	ip -$1 route list 0/0 dev $2 2> /dev/null | awk
> > '{print($3); exit(0)}'
> > +}
> > +wanif=$(uci -q get network.wan.ifname)
> > +if [ -n "$(default_gw 4 $wanif)" -o  -n "$(default_gw 6 $wanif)"
> > ]; then
> > +	internet_active="Ja"
> > +else
> > +	internet_active="Nein"
> > +fi
> > +
> > +echo ""
> > +echo "Router configuration overview:"
> > +
> > +echo ""
> > +echo "-> SYSTEM"
> > +echo "Name: ${HOSTNAME}"
> > +echo "Modell: $(cat /tmp/sysinfo/model 2>/dev/null)"
> > +echo "MAC-Adresse: $(cat /sys/class/net/br-mesh/address)"
> > +echo "Bekannte Knoten: $((`cat
> > /sys/kernel/debug/batman_adv/bat0/transtable_global | grep '^ [^ ]'
> > | cut -b 39-55 | sort | uniq | wc -l 2>/dev/null`+1))"
> > +echo "Nachbarknoten: $(cat
> > /sys/kernel/debug/batman_adv/bat0/originators | grep '^[0-9a-f]' |
> > cut -b 37-53 | sort | uniq | wc -l 2>/dev/null)"
> > +echo "VPN via fastd: ${vpn_active}"
> > +echo "VPN via L2TP: ${l2tp_active}"
> > +echo "Laufzeit: ${uptime}"
> > +echo "Auslastung: ${load}"
> > +echo "Uhrzeit: $(date)"
> > +
> > +echo ""
> > +echo "-> SOFTWARE"
> > +echo "Firmware Version: ${FIRMWARE_VERSION}"
> > +echo "LEDE Version: ${DISTRIB_DESCRIPTION}"
> > +echo "Kernel Version: $(uname -s -m -r)"
> > +echo "Batman-Adv Version: $(cat /sys/module/batman_adv/version
> > 2>/dev/null)"
> > +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 "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 "IPv4 Adressen: $(addr 4 $wanif)"
> > +echo "IPv6 Adressen: $(addr 6 $wanif)"
> > +
> > +echo ""
> > +echo "-> EINSTELLUNGEN"
> > +echo "Knotenname: ${HOSTNAME}"
> > +echo "Knotenbeschreibung: $(uci -q get 'system.@system[0].descript
> > ion')"
> > +echo "GPS Breitengrad: $(uci -q get 'system.@system[0].latitude')"
> > +echo "GPS Laengengrad: $(uci -q get 'system.@system[0].longitude')
> > "
> > +echo "Standortbeschreibung: $(uci -q get 'system.@system[0].positi
> > on_comment')"
> > +echo "E-Mail Adresse: $(uci -q get 'system.@system[0].contact')"
> > +
> > +echo ""
> > +echo "-> SWITCH"
> > +if swconfig list | grep -q switch0 ; then
> > +	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/')
> > +		link=$(echo "$line" | sed 's/.* link:\([^
> > ]*\).*/\1/')
> > +		if [ "$link" == "up" ] ; then
> > +			speed=$(echo "$line" | sed 's/.*
> > speed:\([^ ]*\).*/\1/')
> > +			duplex=$(echo "$line" | sed 's/.* \([^ ]*-
> > duplex\).*/\1/')
> > +		else
> > +			speed="no link"
> > +			duplex=""
> > +		fi
> > +		port="Port ${port}"
> > +		echo "${port}: ${link} @ $speed $duplex"
> > +	done
> > +fi
> > +
> > +echo ""
> > +echo "END"
> > 
> 
>
Adrian Schmutzler Aug. 20, 2017, 8:58 p.m.
Hallo Christian,

nur nachträglich zur Antwort auf deine Fragen:

Ich "warte" ja ca. 60 Router und logge mich dabei über SSH ein. Dieses
Skript liefert mir dabei den komfortablen Überblick über Parameter, den ich
sonst nur im WebUI habe (Hier ist aber der Zugang von verschiedenen Computer
ungleich schwieriger). Das ist der simple Zweck des Skriptes.

Entsprechend habe ich das WebUI 1:1 nachgebildet. Selbstverständlich kann
man hier verschiedenes ergänzen, ggf. könnte man sogar Parameter für
show_info einführen (quasi Verbose-Levels). Das mit dem Speicherplatz habe
ich selbst im Auge, da ich ja zu über 50 % 841er betreue. Wenn das mal ein
Problem wird, sehe ich aber auch noch Potential, das show_info Skript zu
optimieren (was ich im Moment nicht getan habe).

Zwecks Speicherplatz wäre btw auch mein Patch zur configurenetwork-Datei
interessant:
https://pw.freifunk-franken.de/patch/419/
Dies behebt den Aufruf von configurenetwork bei jedem Neustart, wodurch
https://mantis.freifunk-franken.de/view.php?id=56 behoben wird.

Grüße

Adrian

-----Original Message-----
From: franken-dev [mailto:franken-dev-bounces@freifunk.net] On Behalf Of
Christian Dresel
Sent: Sonntag, 20. August 2017 12:36
To: Adrian Schmutzler <freifunk@adrianschmutzler.de>;
franken-dev@freifunk.net
Subject: Re: [PATCH v2] fff-support: Provide shell script with output
similar to WebUI

Hi

hat das Script irgendwo einen weiteren Zweck (also wird für irgendwas
weiteres verwendet) oder dient es nur dafür, das man auf der Konsole die
Infos schön & schnell und einfach einsammeln kann? Wäre vllt. für
Diagnosezwecke ganz sinnvoll wenn auf der ML wieder kommt "geht nicht"
dann können sie das Script laufen lassen und die Ausgabe C&P. Dazu fehlen
aber u.U. noch ein paar Informationen (sepzeill rund um Batman, sind Nodes
in Reichweite? Ist ein Gateway in Reichweite,...) die man evtl. später mal
hinzufügen könnte.

Prinzipiell finde ich es aber schick auch wenn ich es wohl kaum brauche sind
halt wieder knapp 4kbyte Speicher aber ich glaub darauf kommt es aktuell
(noch...?) nicht an und wenn schon irgendwann werden die 4MB Geräte eh
sterben also:

Reviewed-by: Christian Dresel <fff@chrisi01.de>

mfg

Christian

On 30.07.2017 17:36, Adrian Schmutzler wrote:
> Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
> 
> Tested-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
> ---
>  .../fff/fff-support/files/usr/sbin/show_info       | 123
+++++++++++++++++++++
>  1 file changed, 123 insertions(+)
>  create mode 100755 
> src/packages/fff/fff-support/files/usr/sbin/show_info
> 
> diff --git a/src/packages/fff/fff-support/files/usr/sbin/show_info 
> b/src/packages/fff/fff-support/files/usr/sbin/show_info
> new file mode 100755
> index 0000000..17fbb9f
> --- /dev/null
> +++ b/src/packages/fff/fff-support/files/usr/sbin/show_info
> @@ -0,0 +1,123 @@
> +#!/bin/sh
> +
> +. /etc/community.cfg
> +. /etc/firmware_release
> +
> +HOSTNAME=$(uci -q get 'system.@system[0].hostname')
> +
> +human_bytes() {
> +	while read B ; do
> +		[ $B -lt 1024 ] && echo ${B} B && break
> +		KB=$(((B+512)/1024))
> +		[ $KB -lt 1024 ] && echo ${KB} KB && break
> +		MB=$(((KB+512)/1024))
> +		[ $MB -lt 1024 ] && echo ${MB} MB && break
> +		GB=$(((MB+512)/1024))
> +		[ $GB -lt 1024 ] && echo ${GB} GB && break
> +		echo $(((GB+512)/1024)) TB
> +	done
> +}
> +
> +if pidof fastd >/dev/null ; then
> +	vpn_active="aktiv"
> +else
> +	vpn_active="inaktiv"
> +fi
> +if grep -q '1' /sys/class/net/l2tp*/carrier 2> /dev/null ; then
> +	l2tp_active="aktiv"
> +else
> +	l2tp_active="inaktiv"
> +fi
> +up="$(uptime)"
> +load="${up##*:}"
> +uptime="${up%%,*}"
> +uptime="${uptime##*up}"
> +
> +#include OpenWrt version
> +. /etc/openwrt_release
> +. /etc/firmware_release
> +
> +addr() {
> +	local addr="$(ip -$1 address show dev $2 2>/dev/null | tr '/' ' '|
awk '/inet/{ printf("%s ", $2); }')"
> +	echo "${addr:--}"
> +}
> +default_gw() {
> +	ip -$1 route list 0/0 dev $2 2> /dev/null | awk '{print($3);
exit(0)}'
> +}
> +wanif=$(uci -q get network.wan.ifname) if [ -n "$(default_gw 4 
> +$wanif)" -o  -n "$(default_gw 6 $wanif)" ]; then
> +	internet_active="Ja"
> +else
> +	internet_active="Nein"
> +fi
> +
> +echo ""
> +echo "Router configuration overview:"
> +
> +echo ""
> +echo "-> SYSTEM"
> +echo "Name: ${HOSTNAME}"
> +echo "Modell: $(cat /tmp/sysinfo/model 2>/dev/null)"
> +echo "MAC-Adresse: $(cat /sys/class/net/br-mesh/address)"
> +echo "Bekannte Knoten: $((`cat
/sys/kernel/debug/batman_adv/bat0/transtable_global | grep '^ [^ ]' | cut -b
39-55 | sort | uniq | wc -l 2>/dev/null`+1))"
> +echo "Nachbarknoten: $(cat /sys/kernel/debug/batman_adv/bat0/originators
| grep '^[0-9a-f]' | cut -b 37-53 | sort | uniq | wc -l 2>/dev/null)"
> +echo "VPN via fastd: ${vpn_active}"
> +echo "VPN via L2TP: ${l2tp_active}"
> +echo "Laufzeit: ${uptime}"
> +echo "Auslastung: ${load}"
> +echo "Uhrzeit: $(date)"
> +
> +echo ""
> +echo "-> SOFTWARE"
> +echo "Firmware Version: ${FIRMWARE_VERSION}"
> +echo "LEDE Version: ${DISTRIB_DESCRIPTION}"
> +echo "Kernel Version: $(uname -s -m -r)"
> +echo "Batman-Adv Version: $(cat /sys/module/batman_adv/version
2>/dev/null)"
> +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 "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 "IPv4 Adressen: $(addr 4 $wanif)"
> +echo "IPv6 Adressen: $(addr 6 $wanif)"
> +
> +echo ""
> +echo "-> EINSTELLUNGEN"
> +echo "Knotenname: ${HOSTNAME}"
> +echo "Knotenbeschreibung: $(uci -q get 'system.@system[0].description')"
> +echo "GPS Breitengrad: $(uci -q get 'system.@system[0].latitude')"
> +echo "GPS Laengengrad: $(uci -q get 'system.@system[0].longitude')"
> +echo "Standortbeschreibung: $(uci -q get
'system.@system[0].position_comment')"
> +echo "E-Mail Adresse: $(uci -q get 'system.@system[0].contact')"
> +
> +echo ""
> +echo "-> SWITCH"
> +if swconfig list | grep -q switch0 ; then
> +	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/')
> +		link=$(echo "$line" | sed 's/.* link:\([^ ]*\).*/\1/')
> +		if [ "$link" == "up" ] ; then
> +			speed=$(echo "$line" | sed 's/.* speed:\([^
]*\).*/\1/')
> +			duplex=$(echo "$line" | sed 's/.* \([^
]*-duplex\).*/\1/')
> +		else
> +			speed="no link"
> +			duplex=""
> +		fi
> +		port="Port ${port}"
> +		echo "${port}: ${link} @ $speed $duplex"
> +	done
> +fi
> +
> +echo ""
> +echo "END"
>