请问怎么在 openwrt 上监控设备的连接与断开?

2015-06-24 04:25:30 +08:00
 nsznsznsz
我需要在外部设备连接或断开我的路由器的时候做一些额外操作
可是没找到有什么办法当设备连接或断开的时候通知我的程序

我也没找到有什么办法能通过Native API或者命令获取当前连接的设备列表
也不能通过arp表或者dhcp表来查看 因为它们不是实时变化的

我现在的方法是每10分钟通过openwrt的web接口获得当前连接的设备列表来检测
这样能准确获得当前已连接的设备列表 可是这样效率比较低 而且不能快速反应
不知道openwrt内部是怎么获取的

求指教
1670 次点击
所在节点    OpenWrt
13 条回复
jasontse
2015-06-24 05:56:48 +08:00
# iwinfo wlan0 assoclist
liqinliqin
2015-06-24 06:58:32 +08:00
@jasontse 楼上正解,
其实也可以通过空中抓包分析,不和是不是连接到当前路由了,根据信号强度RSSI一样可以知道距离。
1423
2015-06-24 09:48:19 +08:00
我用的是 /proc/dhcp.lease
不知道记错了没 似乎是 /tmp 下的?
1423
2015-06-24 09:49:11 +08:00
@1423 补充。 dhcp租期缩小点。5min这样
nsznsznsz
2015-06-24 15:45:27 +08:00
@jasontse @1423 dhcp.lease和iwinfo我都知道 但是都是要自己定时去取的
我现在的主要目标不是如何取出连接的信息 而是怎样才能够实时监控连接和断开的境况
连接和断开的时候应该必然会发生一些事件 我主要想怎么能够监听到这些事件

@liqinliqin 我的程序是运行在路由器上的...拥有root权限 没有必要去判断信号强度什么的吧...
20150517
2015-06-24 16:50:39 +08:00
openwrt开源的,看源代码啊,自己重新编译个
20150517
2015-06-24 21:28:57 +08:00
其实你可以读log,log里有信息显示 连接的,但断开连接估计路由自己都不知道
liqinliqin
2015-06-24 22:43:50 +08:00
@nsznsznsz
还是有必要的,到最后实际用的时候,你的程序有可能不在路由上运行,就在一个角落里面。
nsznsznsz
2015-06-24 22:51:07 +08:00
@20150517 我刚刚试了下 的确可以看到连接的ip和mac地址 断开的时候有时候有显示 有时候又没有 有点奇怪
log变化得太快 监控log的话不停的读文件效率有点低
我刚刚想到的新方法是监控arp表 这个比dhcp稍微要准

@liqinliqin 这程序只是我自己用 不是商业程序
1423
2015-06-25 00:18:43 +08:00
@nsznsznsz arp 准么?我测试,断开链接后几个小时 arp 还有,但主机名是问号
我弄了个 pppoe 按需连接的脚本用的是 dhcp ,正常工作一个月左右了
20150517
2015-06-25 01:20:30 +08:00
@nsznsznsz 我最近也是家用做了一个,远程ssh读一个dhcp文件,然后写到mongo登记所有登录上来的设备
nsznsznsz
2015-06-25 15:08:08 +08:00
@1423 我的这个arp似乎1分钟以内会刷新一次 我没做过特别设置
没断线的设备arp表里面那个flag是2
断线了的是0 几分钟后项目会被删掉
linkupmylife
2015-06-26 17:19:37 +08:00
可以用STP,会有Topology Change Notification提示。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/200684

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX