大家好,我正在为我的Raspberry Pi家庭服务器编写一个智能家庭扩展。为此,我想通过检查智能手机是否连接到本地网络来了解何时有人在家。
不幸的是,到目前为止,ping Android设备的情况最不可靠。这取决于睡眠状态,Nexus 5X根本没有响应ping。我也不想摆弄睡眠设置,因为这会缩短电池寿命。
我的路由器说设备已连接,但我不知道如何传递这些信息。有什么方法我可以确定任何智能手机都通过Python连接到WiFi吗?
答案 0 :(得分:0)
我相信这个问题has been asked before但是我花了一些谷歌搜索才找到它。简短的回答是肯定的,但需要了解路由器的服务,DNS和DHCP。
答案 1 :(得分:0)
好的,简单的方法是使用映射函数的'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,这是我仍需要解决的问题。