python wifi 切换网络

场景:公司好多网络,我的jenkins 是在本地跑的,有的网络连接不了内网,导致一些任务失败等等,反正我要切换网络

pywifi

因为上面这个库 没法看当前连接的wifi 的 名字,所以根据ip 网段判断 是否在我中意的网段。

def switch_wifi():
    """切换wifi"""
    assert_ip_net = '1'
    now_ip = get_host_ip()
    print(now_ip)
    ip_network = now_ip.split('.')[2]
    support_wifi_names = ['zld-h3c-pc', 'zld-td-5G']
    if ip_network == assert_ip_net:
        wifi = pywifi.PyWiFi()  
        net_card = wifi.interfaces()[0]  
        net_card.scan()
        sleep(5)
        wifi_info_list = net_card.scan_results()  
        all_wifi_name = []
        for wifi_data in wifi_info_list:
            if wifi_data.ssid in support_wifi_names:
                all_wifi_name.append(wifi_data.ssid)

        wifi_name = random.choice(all_wifi_name)

        profile_info = pywifi.Profile()
        profile_info.ssid = wifi_name
        if 'pc' in wifi_name:
            profile_info.key = 'one wifi password'
        else:
            profile_info.key = 'two wifi password'
        profile_info.auth = pywifi.const.AUTH_ALG_OPEN
        profile_info.akm.append(pywifi.const.AKM_TYPE_WPA2PSK)
        profile_info.cipher = pywifi.const.CIPHER_TYPE_CCMP
        net_card.remove_all_network_profiles()
        tem_profile = net_card.add_network_profile(profile_info)
        net_card.connect(tem_profile)
        sleep(5)
        if net_card.status() == pywifi.const.IFACE_CONNECTED:
            print(f"连接成功{wifi_name}")
        else:
            print(f"连接失败{wifi_name}")
        now_ip = get_host_ip()
        print(now_ip)
    else:
        print(f'当前网络正常,无需切换')

 

### 关于Python WiFi爬虫开发 在探讨如何利用Python进行与WiFi相关的爬虫开发之前,值得注意的是,创建或使用任何类型的网络扫描工具来未经授权访问无线网络可能违反法律并构成不道德行为。合法合规的应用场景通常涉及网络安全测试,在这种情况下,操作应在授权范围内执行。 对于基于PythonWiFi相关项目,更多是指向Wi-Fi环境下的数据收集或是安全审计工作,而不是传统意义上的网页抓取。这类任务往往涉及到监听802.11帧、解析信标信号强度指示(RSSI),甚至是对特定SSID的数据包捕获分析等功能。这超出了标准HTTP请求响应模式下Web爬虫的概念范畴。 #### 使用Scapy库实现基本的WiFi探测功能 为了展示一个简单的WiFi环境感知例子,可以采用`scapy`这个强大的交互式报文处理工具来进行无线局域网(WLAN)接口上的被动侦听: ```python from scapy.all import * def packet_handler(pkt): if pkt.haslayer(Dot11Beacon): # 只关注beacon帧 print(f"Detected SSID: {pkt.info.decode()}") interface = 'wlan0mon' # 需要事先设置好监控模式的无线网卡名称 sniff(iface=interface, prn=packet_handler, store=False) ``` 上述脚本会持续打印出周围可见的Wi-Fi热点名称(SSID)[^3]。请注意实际部署前需确保所使用的计算机具备支持monitor mode的无线适配器,并已通过airmon-ng等命令行工具将其切换至该模式运行。 #### 注意事项 - 执行此类程序时应严格遵循当地法律法规; - 对硬件设备的要求较高,不是所有的无线网卡都兼容这些高级特性; - 进行任何形式的安全研究活动均需获得目标系统的正式许可;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值