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'當前網絡正常,無需切換')

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章