Temat: Skrypt /sbin/sysinfo.sh
Witam,
Cezary nie wiem, kto jest autorem skryptu sysinfo.sh więc kieruję to do Ciebie.
Pozwoliłem sobie na małą modyfikacje tego skryptu:
- zmieniłem wyszukiwanie WAN-u, był na sztywno teraz jest dynamicznie,
- dodałem informacje o DNS-ach i podsieci,
- w WiFi zmieniłem wyświetlanie trybu, dla kilku sta i ap źle pokazywał,
- w WiFi zmieniłem wykrywanie czy włączone jest radio0 na dynamiczne zależne od rzeczywistej ilości interfejsów radio*,
- w WiFi dodałem wykrywanie czy włączony jest konkretny interfejs,
- dodałem sekcję informacji o VPN.
Czy możesz zaktualizować go w Swoich obrazach?
#!/bin/sh
. /lib/functions/network.sh
MACH=""
[ -e /tmp/sysinfo/model ] && MACH=$(cat /tmp/sysinfo/model)
U=$(cut -d. -f1 /proc/uptime)
D=$(expr $U / 60 / 60 / 24)
H=$(expr $U / 60 / 60 % 24)
M=$(expr $U / 60 % 60)
S=$(expr $U % 60)
U=$(printf "%dd, %02d:%02d:%02d" $D $H $M $S)
L=$(awk '{ print $1" "$2" "$3}' /proc/loadavg)
RFS=$(df -h /overlay | awk '/overlay/ {printf "used: %s, total: %s", $3, $2}')
total_mem="$(awk '/^MemTotal:/ {print $2}' /proc/meminfo)"
buffers_mem="$(awk '/^Buffers:/ {print $2}' /proc/meminfo)"
cached_mem="$(awk '/^Cached:/ {print $2}' /proc/meminfo)"
free_mem="$(awk '/^MemFree:/ {print $2}' /proc/meminfo)"
free_mem="$(( ${free_mem} + ${buffers_mem} + ${cached_mem} ))"
MEM=$(echo "free: ""$free_mem""K, total: ""$total_mem""K")
#LAN=$(uci -q get network.lan.ipaddr)
#WAN=$(uci -q -P /var/state get network.wan.ipaddr)
#[ -z "$WAN" ] && WAN=$(ifstatus wan | awk -F\" '/"address"/ {print $4}')
#[ -n "$WAN" ] && WAN="$WAN, proto: "$(uci -q get network.wan.proto)
LAN_DEV="lan"
network_get_ipaddr LAN_IP $LAN_DEV
network_get_subnet LAN_SUBNET $LAN_DEV
network_find_wan WAN_DEV
network_get_ipaddr WAN_IP $WAN_DEV
network_get_subnet WAN_SUBNET $WAN_DEV
network_get_dnsserver WAN_DNS $WAN_DEV
WAN_PROT=$(uci -q get network.$WAN_DEV.proto)
printf " | %-60s |\n" "Machine: $MACH"
printf " | %-60s |\n" "Uptime: $U"
printf " | %-60s |\n" "Load: $L"
printf " | %-60s |\n" "Flash: $RFS"
printf " | %-60s |\n" "Memory: $MEM"
printf " | %-60s |\n" "WAN: $WAN_IP, subnet: $WAN_SUBNET, proto: $WAN_PROT"
printf " | %-60s |\n" "DNS: $WAN_DNS"
printf " | %-60s |\n" "LAN: $LAN_IP, subnet: $LAN_SUBNET"
IFACES=$(uci -q show wireless | grep device=radio | cut -f2 -d.)
for i in $IFACES; do
SSID=$(uci -q get wireless.$i.ssid)
DEV=$(uci -q get wireless.$i.device)
OFF=$(uci -q get wireless.$DEV.disabled)
OFF2=$(uci -q get wireless.$i.disabled)
if [ -n "$SSID" ] && [ "$OFF" != "1" ] && [ "$OFF2" != "1" ]; then
MODE=$(uci -q -P /var/state get wireless.$i.mode)
RIFACE=$(uci -q -P /var/state get wireless.$i.ifname)
[ -n "$RIFACE" ] && CNT=$(iw dev $RIFACE station dump | grep Station | wc -l)
CHANNEL=$(uci -q get wireless.$DEV.channel)
printf " | %-60s |\n" "WLAN: mode: $MODE, ssid: $SSID, channel: $CHANNEL, conn: $CNT"
fi
done
VPNS=$(uci -q show openvpn | grep .ca= | cut -f2 -d.)
for VPN in $VPNS; do
OFF=$(uci -q get openvpn.$VPN.enabled)
if [ "$OFF" == "1" ] || [ "$OFF" == "" ]; then
MODE=$(uci -q get openvpn.$VPN.mode)
STATUS=$(uci -q get openvpn.$VPN.status)
DEV=$(uci -q get openvpn.$VPN.dev)
if [ "$MODE" == "server" ]; then
MODE="$MODE:$(uci -q get openvpn.$VPN.port)"
CNT=$(cat $STATUS | awk 'BEGIN{FS=",";c=0;l=0}{if($1=="Common Name")l=1;else if($1=="ROUTING TABLE")exit;else if (l==1) c=c+1}END{print c}')
else
MODE="client"
CNT="Down"
ifconfig $DEV &>/dev/null && CNT="Up"
fi
RXTX=$(cat /proc/net/dev | awk -v dev=$DEV 'BEGIN {OFMT = "%.0f";OFS=""}$1==dev ":"{print "Rx:",($2/1024/1024),"M,Tx:",$10/1024/1024,"M"}')
printf " | %-60s |\n" "VPN: mode: $MODE, dev: $DEV, conn: $CNT, $RXTX"
fi
done
echo " ----------------------------------------------------------------"
exit 0
Tu moje skrypty na GitHub