大家好,我正在为我的树莓派家庭服务器编写一个智能家居扩展。为此,我想通过检查智能手机是否连接到本地网络来了解是否有人在家。
不幸的是,到目前为止,在最好的情况下,pinging设备是不可靠的。这取决于休眠状态,并且Nexus 5X完全不响应ping。我也不想摆弄睡眠设置,因为那会降低电池寿命。
我的路由器说设备已连接,但我不知道如何转发此信息。有没有什么方法可以让我确定任何智能手机都是通过Python连接到WiFi上的?
发布于 2017-10-04 03:36:42
我相信这个问题has been asked before,但我花了一些谷歌找到它。简而言之,答案是肯定的,但这需要您对路由器的服务、DNS和DHCP有所了解。
发布于 2017-10-05 05:29:19
好的,最简单的方法是使用'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,这是我还需要解决的问题。
https://stackoverflow.com/questions/46551928
复制相似问题