Files
small-packages/lean/luci-app-fogvdn/root/usr/share/pcdn/check_netdev
T
2026-09-17 11:00:22 +08:00

38 lines
1.2 KiB
Bash
Executable File

#!/bin/sh
# 脚本功能:json方式返回 网络物理设备
. /usr/share/libubox/jshn.sh
function get_netdevs()
{
# 过滤条件:无ip, bridge, wlan, lo 设备
for netdev in `ls /sys/class/net`;do
if [ -d "/sys/class/net/$netdev" ] && [ -n "$netdev" ];then
filter=0
unset DEVTYPE
. /sys/class/net/$netdev/uevent
cdir4=`ip addr show dev $netdev|grep "inet " | grep -E -o '([0-9]{1,3}\.){3}[0-9]{1,3}/[0-9]{1,2}' | sed ':a;N;$!ba;s/\n/;/g'`
[ -z "$cdir4" ] && filter=1
[ "$DEVTYPE" == "bridge" ] && filter=1
[ "$DEVTYPE" == "wlan" ] && filter=1
[ "$netdev" == "lo" ] && filter=1
if [ "$filter" -eq 0 ];then
macaddr=`cat /sys/class/net/$netdev/address`
#format $netdev (ip:cdir4 mac:address)
netdev_info="IP: $cdir4;"
[ -n "$macaddr" ] && netdev_info="$netdev_info MAC:$macaddr"
[ -n "$DEVTYPE" ] && netdev_info="$netdev_info TYPE:$DEVTYPE"
json_add_string $netdev "$netdev_info"
fi
fi
done
}
json_init
case $1 in
get_netdevs)
get_netdevs
;;
esac
json_dump