无线网卡定时自动重连
模块安装要求
comtypes>=1.1.10
pywifi>=1.1.12
APScheduler>=3.9.1
实现代码
"""通过定时任务自动重连某个 Wifi 网络"""
from datetime import datetime
from time import sleep
from pywifi import const
import pywifi
from apscheduler.schedulers.blocking import BlockingScheduler
wifi = pywifi.PyWiFi()
interface = wifi.interfaces()[1]
scheduler = BlockingScheduler()
def check_wifi_status(wifi_name: str):
if interface.status() == const.IFACE_CONNECTED:
print(f"{datetime.now().strftime('%Y-%m-%d %H:%M:%S')} “{wifi_name}” 网络连接成功!")
return True
else:
print(f"{datetime.now().strftime('%Y-%m-%d %H:%M:%S')} “{wifi_name}” 网络连接失败!尝试再次连接...")
return False
def connect_wifi(wifi_name: str, wifi_pass: str):
"""
自动重连到指定的无线网:
:param wifi_name:
:param wifi_pass:
:return:
"""
if interface.status() == const.IFACE_CONNECTED:
interface.disconnect()
print(f"{datetime.now().strftime('%Y-%m-%d %H:%M:%S')} “{wifi_name}” 或其它网络已断开,准备重连...")
if interface.status() == const.IFACE_DISCONNECTED:
profile = pywifi.Profile()
profile.ssid = wifi_name
profile.auth = const.AUTH_ALG_OPEN
profile.akm.append(const.AKM_TYPE_WPA2PSK)
profile.cipher = const.CIPHER_TYPE_CCMP
profile.key = wifi_pass
interface.remove_all_network_profiles()
tep_profile = interface.add_network_profile(profile)
interface.connect(tep_profile)
sleep(3)
while not check_wifi_status(wifi_name):
interface.connect(tep_profile)
sleep(3)
check_wifi_status(wifi_name)
scheduler.add_job(
connect_wifi,
trigger="interval",
minutes=5,
max_instances=3,
args=["wifi name", "wifi password"]
)
scheduler.start()
打包
pip3 install pefile pyinstaller
pyinstaller --onefile --nowindowed wifi.py -i wifi.ico
pyinstaller --onefile --nowindowed wifi.py