forked from freifunk-franken/firmware
Adrian Schmutzler
d9ec8edb15
The debug filesystem will be deprecated and disabled by default in newer versions of B.A.T.M.A.N. This patch switches our code to the batctl, as recommended. Since batctl can suppress headers, this actually makes our life easier ... Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de> Tested-by: Adrian Schmutzler <freifunk@adrianschmutzler.de> Reviewed-by: Robert Langhammer <rlanghammer@web.de>
251 lines
7.3 KiB
Bash
Executable File
251 lines
7.3 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
. /etc/firmware_release
|
|
. /lib/functions/fff/evalhoodinfo
|
|
. /lib/functions/fff/evalbytes
|
|
. /lib/functions.sh # required for config_load and config_foreach
|
|
|
|
board_name=$(uci -q get board.model.name)
|
|
|
|
HOSTNAME=$(uci -q get 'fff.system.hostname')
|
|
hood="$(uci -q get "system.@system[0].hood")"
|
|
hoodid="$(uci -q get "system.@system[0].hoodid")"
|
|
|
|
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 -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
|
|
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: $(($(batctl tg -H | cut -b 40-56 | sort | uniq | wc -l 2>/dev/null)+1))"
|
|
echo "Nachbarknoten: $(batctl o -H | cut -b 40-56 | 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 "-> HOOD"
|
|
echo "Hood: ${hood} / ID: ${hoodid}"
|
|
echo "Mesh-Type (2.4/5 GHz): ${mesh_type2} / ${mesh_type5}"
|
|
echo "Channel (2.4/5 GHz): ${real_chan2ghz} / ${real_chan5ghz} (real) | ${chan2ghz} / ${chan5ghz} (Hood)"
|
|
echo "SSID (Client-AP): ${real_essid} (real) | ${essid} (Hood)"
|
|
if uci -q get wireless.w2configap > /dev/null ; then
|
|
echo "Config-AP: up"
|
|
else
|
|
echo "Config-AP: down"
|
|
fi
|
|
|
|
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: $(batctl tl -H 2> /dev/null | grep -c 'W')"
|
|
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 ""
|
|
if [ -d /etc/fastd/fff/peers ]; then
|
|
echo "-> FASTD: Peer list"
|
|
for fastdpeer in $(ls /etc/fastd/fff/peers); do
|
|
echo "${fastdpeer}: $(grep "remote" "/etc/fastd/fff/peers/$fastdpeer" | sed "s/remote //")"
|
|
done
|
|
else
|
|
echo "-> FASTD"
|
|
echo "No FASTD peers available"
|
|
fi
|
|
|
|
function printL2TP() {
|
|
local broker="$1"
|
|
echo "${broker}: $(uci -q get "tunneldigger.$broker.address")"
|
|
}
|
|
|
|
echo ""
|
|
if [ -s /etc/config/tunneldigger ]; then
|
|
echo "-> L2TP: Peer list"
|
|
config_load tunneldigger
|
|
config_foreach printL2TP broker
|
|
else
|
|
echo "-> L2TP"
|
|
echo "No L2TP peers available"
|
|
fi
|
|
|
|
echo ""
|
|
echo "-> Netz: WAN"
|
|
echo "Internet vorhanden: ${internet_active}"
|
|
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)"
|
|
|
|
echo ""
|
|
echo "-> EINSTELLUNGEN"
|
|
echo "Knotenname: ${HOSTNAME}"
|
|
echo "Knotenbeschreibung: $(uci -q get 'fff.system.description')"
|
|
echo "GPS Breitengrad: $(uci -q get 'fff.system.latitude')"
|
|
echo "GPS Laengengrad: $(uci -q get 'fff.system.longitude')"
|
|
echo "Standortbeschreibung: $(uci -q get 'fff.system.position_comment')"
|
|
echo "E-Mail Adresse: $(uci -q get 'fff.system.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 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 -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"
|
|
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
|
|
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
|
|
fi
|
|
|
|
echo ""
|
|
echo "END"
|