場景:公司好多網絡,我的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'當前網絡正常,無需切換')