forked from freifunk-franken/firmware
210 lines
6.2 KiB
Bash
Executable File
210 lines
6.2 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
. /etc/firmware_release
|
|
|
|
board_name=$(uci -q get board.model.name)
|
|
|
|
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
|
|
}
|
|
format_state() {
|
|
batmanports=$(swconfig dev switch0 vlan 3 show | grep 'ports:')
|
|
clientports=$(swconfig dev switch0 vlan 1 show | grep 'ports:')
|
|
wanports=$(swconfig dev switch0 vlan 2 show | grep 'ports:')
|
|
|
|
if (echo "$clientports" | grep -q "${1}") && (echo "$batmanports" | grep -q "${1}") ; then
|
|
linkstate="Multi-Link"
|
|
elif echo "$clientports" | grep -q "${1}" ; then
|
|
linkstate="CLIENT"
|
|
elif echo "$batmanports" | grep -q "${1}" ; then
|
|
linkstate="BATMAN"
|
|
elif echo "$wanports" | grep -q "${1}" ; then
|
|
linkstate="WAN"
|
|
else
|
|
linkstate="Unknown"
|
|
fi
|
|
printf '%-11s' "$linkstate "
|
|
}
|
|
format_port() {
|
|
port=$(echo "$1" | sed 's/.* port:\([^ ]*\) .*/\1/')
|
|
link=$(echo "$1" | sed 's/.* link:\([^ ]*\).*/\1/')
|
|
if [ "$link" = "up" ] ; then
|
|
speed=$(echo "$1" | sed 's/.* speed:\([^ ]*\).*/\1/')
|
|
duplex=$(echo "$1" | sed 's/.* \([^ ]*-duplex\).*/\1/')
|
|
else
|
|
speed="no link"
|
|
duplex=""
|
|
fi
|
|
printf '%-5s%s' "${link} " "- "
|
|
format_state "${port}"
|
|
printf '%-26s' "@ $speed $duplex "
|
|
|
|
swconfig dev switch0 show | grep "VLAN\s" | 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
|
|
printf '%-2s ' "t"
|
|
elif echo "$vports" | grep -q "${port}" ; then
|
|
printf '%-2s ' "u"
|
|
else
|
|
printf '%-2s ' "-"
|
|
fi
|
|
done
|
|
echo ""
|
|
}
|
|
|
|
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 "-> BITRATEN-BEGRENZUNG"
|
|
if [ "$(uci -q get 'simple-tc.example.enabled')" == "1" ] ; then
|
|
echo "Aktiv: ja"
|
|
else
|
|
echo "Aktiv: nein"
|
|
fi
|
|
echo "Download-Limit: $(uci -q get 'simple-tc.example.limit_ingress') kBit/s"
|
|
echo "Upload-Limit: $(uci -q get 'simple-tc.example.limit_egress') kBit/s"
|
|
|
|
if grep -q 'PORTORDER=' /etc/network.$board_name ; then
|
|
portorder=$(awk -F= '/PORTORDER=/ { print $2 }' /etc/network.$board_name | sed "s/\"//g")
|
|
fi
|
|
|
|
echo ""
|
|
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 ""
|
|
|
|
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
|
|
|
|
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
|
|
fi
|
|
printf '%-10s' "Port #${port}: "
|
|
format_port "${line}"
|
|
done
|
|
|
|
echo ""
|
|
echo "END"
|