原文:github.com/awkman/pywifi/blob/master/DOC.md
PyWiFi学习文档
PyWiFi中定义了以下常量
在使用PyWiFi之前,应先 import pywifi
接口状态
Interface.status() 将返回以下状态代码之一
const.IFACE_DISCONNECTED #4
const.IFACE_SCANNING #1
const.IFACE_INACTIVE #2
const.IFACE_CONNECTING #3
const.IFACE_CONNECTED #0
认证算法
身份验证算法应分配到一个 Profile 中
在正常情况下,几乎所有AP都使用 开放 算法。
const.AUTH_OPEN
const.AUTH_SHARED
密钥管理类型
密钥管理类型应分配给一个 Profile.
对于普通AP,如果
- AP没有安全设置,请将配置文件akm设置为
AKM_TYPE_NONE. - AP处于WPA模式时,将配置文件akm设置为
AKM_TYUPE_WPAPSK. - AP处于WPA2模式时,将配置文件akm设置为
AKM_TYUPE_WPA2PSK.
AKM_TYPE_WPA 和AKM_TYPE_WPA2 被企业AP所使用。
const.AKM_TYPE_NONE
const.AKM_TYPE_WPA
const.AKM_TYPE_WPAPSK
const.AKM_TYPE_WPA2
const.AKM_TYPE_WPA2PSK
密码类型
如果akm不可用,则应将密码类型设置为Profile AKM_TYPE_NONE。
你也可以参考要连接到的AP的设置。
const.CIPHER_TYPE_NONE
const.CIPHER_TYPE_WEP
const.CIPHER_TYPE_TKIP
const.CIPHER_TYPE_CCMP
网络配置文件
Profile是我们要连接到的AP的配置。
配置文件的字段如下所示:
-
ssid- AP的ssid。 -
auth- AP的认证算法。 -
akm- AP的密钥管理类型。 -
cipher- AP的密码类型。 -
key(optinoal) - (optinoal) - AP的秘钥。
如果密码不正确,则应设置CIPHER_TYPE_NONE选项
例如:
import pywifi
profile = pywifi.Profile()
profile.ssid = 'testap'
profile.auth = const.AUTH_ALG_OPEN
profile.akm.append(const.AKM_TYPE_WPA2PSK)
profile.cipher = const.CIPHER_TYPE_CCMP
profile.key = '12345678'
wifi = pywifi.PyWiFi()
iface = wifi.interfaces()[0]
profile = iface.add_network_profile(profile)
iface.connect(profile)
接口
Interface 指我们用于执行的Wi-Fi接口
Wi-Fi操作 (例如: 扫描、连接、断开......).
获取接口信息
通常,平台中只有一个Wi-Fi接口。
因此,使用索引 0 获得Wi-Fi接口。
import pywifi
wifi = pywifi.PyWiFi()
iface = wifi.interfaces()[0]
Interface.name()
- 获取接口名字。
Interface.scan()
- 触发接口以扫描AP。
Interface.scan_results()
- 获取上一次触发扫描的结果。
- 将返回 Profile 列表。
注: 因为每个Wi-Fi接口的扫描时间是不同的。
2~8秒后调用scan_results()会比直接调用scan()更安全。
Interface.add_network_profile(profile)
添加AP配置文件以供以后连接。
Interface.remove_all_network_profiles()
删除所有AP配置文件。
Interface.network_profiles()
通过返回Profile列表获取所有保存的AP配置文件。
Interface.connect(profile)
通过给定的profile连接到指定的AP。
注: 作为目前的设计, add_network_profile(profile) 应该在connect(profile) 之前被调用。
Interface.disconnect()
断开当前AP连接。
Interface.status()
获取当前状态的状态。