检测安卓手机是不是连接到局域网
Posted
技术标签:
【中文标题】检测安卓手机是不是连接到局域网【英文标题】:Detect if Android phones are connected to LAN检测安卓手机是否连接到局域网 【发布时间】:2017-10-03 19:24:13 【问题描述】:大家好,我正在为我的 Raspberry Pi 家庭服务器编写智能家庭扩展。为此,我想通过检查智能手机是否连接到本地网络来了解何时有人在家。
不幸的是,到目前为止,在最好的情况下,ping android 设备是不可靠的。这取决于睡眠状态,而 Nexus 5X 根本不响应 ping。我也不会摆弄睡眠设置,因为这会缩短电池寿命。
我的路由器说设备已连接,但我不知道如何转发此信息。有什么方法可以确定任何智能手机已使用 Python 连接到 WiFi?
【问题讨论】:
【参考方案1】:我相信这个问题has been asked before,但我花了一些谷歌搜索才能找到它。简短的回答是肯定的,但这需要您对路由器的服务、DNS 和 DHCP 有所了解。
【讨论】:
嗯,这很有趣,但不幸的是高于我的工资等级:/。我无法用 Python 重写已接受的答案。我目前正在考虑编写一个 PhantomJS 脚本来抓取我的路由器后端......【参考方案2】:好的,简单的方法是使用映射函数的“python-nmap”模块。
import nmap
nm = nmap.PortScanner()
nm.scan(hosts='192.168.0.1/24', arguments='-n -sP -PE -PA21,23,80,3389')
hosts_list = [(x, nm[x]['status']['state']) for x in nm.all_hosts()]
for host, status in hosts_list:
print('0:1'.format(host, status))
“192.168.0.1”是您的路由器 IP。这将返回所有已连接设备的列表,包括所有休眠的 Android 设备。
192.168.178.1:up
192.168.178.2:up
...
不幸的是,这个 python-nmap 不使用 Python3,这是我仍然需要弄清楚的。
【讨论】:
以上是关于检测安卓手机是不是连接到局域网的主要内容,如果未能解决你的问题,请参考以下文章