1、python连接WiFi,需要使用pywifi包,安装pywifi:pip install pywifi
2、判断wifi连接状态:
def wifi_connect_status():
wifi = pywifi.PyWiFi()
iface = wifi.interfaces()[0] #acquire the first Wlan card,maybe not
if iface.status() in [const.IFACE_CONNECTED,const.IFACE_INACTIVE]:
print("wifi connected!")
return 1
else:
print("wifi not connected!")
return 0
2、扫描wifi:
def scan_wifi():
wifi = pywifi.PyWiFi()
iface = wifi.interfaces()[0]
iface.scan()
time.sleep(1)
basewifi = iface.scan_results()
for i in basewifi:
print("wifi scan result:{}".format(i.ssid))
print("wifi device MAC address:{}".format(i.bssid))
return basewifi
3、连接指定的wifi:
# Define interface status. IFACE_DISCONNECTED = 0 IFACE_SCANNING = 1 IFACE_INACTIVE = 2 IFACE_CONNECTING = 3 IFACE_CONNECTED = 4 # Define auth algorithms. AUTH_ALG_OPEN = 0 AUTH_ALG_SHARED = 1 # Define auth key mgmt types. AKM_TYPE_NONE = 0 AKM_TYPE_WPA = 1 AKM_TYPE_WPAPSK = 2 AKM_TYPE_WPA2 = 3 AKM_TYPE_WPA2PSK = 4 AKM_TYPE_UNKNOWN = 5 # Define ciphers. CIPHER_TYPE_NONE = 0 CIPHER_TYPE_WEP = 1 CIPHER_TYPE_TKIP = 2 CIPHER_TYPE_CCMP = 3 CIPHER_TYPE_UNKNOWN = 4 # KEY_TYPE_NETWORKKEY = 0 # KEY_TYPE_PASSPHRASE = 1
def connect_wifi():
wifi = pywifi.PyWiFi()
ifaces = wifi.interfaces()[0]
print(ifaces.name()) #输出无线网卡名称
ifaces.disconnect()
time.sleep(3)
profile = pywifi.Profile() #配置文件
profile.ssid = "123_wifi" #wifi名称
profile.auth = const.AUTH_ALG_OPEN #需要密码
profile.akm.append(const.AKM_TYPE_WPA2PSK) #加密类型
profile.cipher = const.CIPHER_TYPE_CCMP #加密单元
profile.key = "88888888" #wifi密码
ifaces.remove_all_network_profiles() #删除其它配置文件
tmp_profile = ifaces.add_network_profile(profile) #加载配置文件
ifaces.connect(tmp_profile)
time.sleep(5)
isok = True
if ifaces.status() == const.IFACE_CONNECTED:
print("connect successfully!")
else:
print("connect failed!")
time.sleep(1)
return isok
完整的测试代码:
#-*-coding:utf-8-*-
import pywifi,time
from pywifi import const
def wifi_connect_status():
wifi = pywifi.PyWiFi()
iface = wifi.interfaces()[0] #acquire the first Wlan card,maybe not
if iface.status() in [const.IFACE_CONNECTED,const.IFACE_INACTIVE]:
print("wifi connected!")
return 1
else:
print("wifi not connected!")
return 0
def scan_wifi():
wifi = pywifi.PyWiFi()
iface = wifi.interfaces()[0]
iface.scan()
time.sleep(1)
basewifi = iface.scan_results()
for i in basewifi:
print("wifi scan result:{}".format(i.ssid))
print("wifi device MAC address:{}".format(i.bssid))
return basewifi
def connect_wifi():
wifi = pywifi.PyWiFi()
ifaces = wifi.interfaces()[0]
print(ifaces.name()) #输出无线网卡名称
ifaces.disconnect()
time.sleep(3)
profile = pywifi.Profile() #配置文件
profile.ssid = "123_wifi" #wifi名称
profile.auth = const.AUTH_ALG_OPEN #需要密码
profile.akm.append(const.AKM_TYPE_WPA2PSK) #加密类型
profile.cipher = const.CIPHER_TYPE_CCMP #加密单元
profile.key = "88888888" #wifi密码
ifaces.remove_all_network_profiles() #删除其它配置文件
tmp_profile = ifaces.add_network_profile(profile) #加载配置文件
ifaces.connect(tmp_profile)
time.sleep(5)
isok = True
if ifaces.status() == const.IFACE_CONNECTED:
print("connect successfully!")
else:
print("connect failed!")
time.sleep(1)
return isok
def main():
print("start")
wifi_connect_status()
scan_wifi()
connect_wifi()
print("finish!")
if __name__ == "__main__":
main()