#!/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"