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