使用 Python pywifi 模块及 apscheduler 定时任务框架实现的无线网卡定时自动重连

无线网卡定时自动重连

模块安装要求

comtypes>=1.1.10
pywifi>=1.1.12
APScheduler>=3.9.1

实现代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""通过定时任务自动重连某个 Wifi 网络"""
from datetime import datetime
from time import sleep
from pywifi import const
import pywifi
from apscheduler.schedulers.blocking import BlockingScheduler

wifi = pywifi.PyWiFi()
# 0 代表第一张网卡,1 代表第二张网卡,以此类推
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:
        # 设置 wifi 连接文件
        profile = pywifi.Profile()
        # 指定要连接的网络名称
        profile.ssid = wifi_name
        # 使用 "Auth - AP" 验证算法
        profile.auth = const.AUTH_ALG_OPEN
        # 使用 "Akm - AP" 密钥管理
        profile.akm.append(const.AKM_TYPE_WPA2PSK)
        # 使用 "Cipher - AP" 密码类型
        profile.cipher = const.CIPHER_TYPE_CCMP
        # 指定 wifi 密码,如果没有密码,则设置值为 "CIPHER_TYPE_NONE"
        profile.key = wifi_pass
        # 删除已连接的所有 wifi 文件
        interface.remove_all_network_profiles()
        # 加载新的 wifi 连接文件
        tep_profile = interface.add_network_profile(profile)
        # 连接上面的 wifi 文件
        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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值