一)通过DHCP client分配列表
root@OpenWrt:/# cat /tmp/dhcp.leases
946732871 f0:43:47:1a:xx:xx 192.168.88.196 Honor_8 01:f0:43:47:1a:bc:xx
946742704 08:10:7a:51:xx:xx 192.168.88.184 STAR10005760 01:08:10:7a:51:85:xx
可以获取到hostname mac ip
二)获取在线状态
第一种方法:
通过arp缓存列表/proc/net/arp(缺点:arp刷新时间默认为30s,这个时间的误差可以接受。
Flags:
0x0是找不到这台主机了。
0x2是主机还在线。
第二种方法:
arping 因为有些设备会用防火墙屏蔽ping命令,而无法屏蔽arping命令
#define ARPING_CMD "arping %s(通过DHCP CLIENT获取的ip) -I br-lan -f -w 1"
#define REPLY_OK "Unicast reply from %s"
第三种方法:
高通9531平台 iwinfo xxx(wifi网卡名称)assoclist|grep dBm|awk -F " " '{print $1}'| tr '[A-Z]' '[a-z]'
可以查看到在线设备信息的mac地址,速度快,无副作用。
第四种方法:mtk7628n 平台
系统命令1:iwpriv ra0 show stainfo /*查看列表信息*/
系统命令2:dmesg |tail -f -n 100|tr '[A-Z]' '[a-z]' /*查看dmesg最后100行打印*/
解析关键字符串 “mode aid bss” 最后一行,通过mac地址分析在线设备信息