76 lines
2.3 KiB
Python
76 lines
2.3 KiB
Python
import wifi_manager
|
|
import subprocess
|
|
import datetime
|
|
import json
|
|
|
|
def scan_wifi():
|
|
try:
|
|
subprocess.run(['nmcli', 'dev', 'wifi', 'rescan'], check=True)
|
|
cmd = "nmcli dev wifi"
|
|
result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
|
|
except subprocess.CalledProcessError as e:
|
|
print(f"{datetime.datetime.now()}: Error scanning Wi-Fi: {e}")
|
|
network_error_light_1()
|
|
return []
|
|
print(f"{datetime.datetime.now()}: Wi-Fi scan complete...")
|
|
ssid_list = []
|
|
wifi_list = []
|
|
output = result.stdout.strip()
|
|
lines = output.split("\n")[1:] # Skip the header line
|
|
for line in lines:
|
|
columns = line.split()
|
|
'''
|
|
'''
|
|
print(columns)
|
|
# for i, column in enumerate(columns):
|
|
# print(f"{i}: {column}")
|
|
|
|
# ['94:14:57:15:13:50', 'Meeting', 'MG', 'Infra', '1', '130', 'Mbit/s', '100', '****', 'WPA1', 'WPA2']
|
|
|
|
# 提取MAC地址
|
|
mac_address = columns[0]
|
|
if columns[0] == '*': # 已连接的WiFi 第一位为*
|
|
mac_address = columns[1]
|
|
|
|
# 提取Wi-Fi名称
|
|
wifi_name = []
|
|
for i in range(1, len(columns)):
|
|
if columns[i] == 'Infra':
|
|
_wifi_name = ' '.join(columns[1:i])
|
|
wifi_name.append(_wifi_name)
|
|
columns = columns[i+1:]
|
|
break
|
|
ssid = wifi_name[0]
|
|
if ':' in ssid:
|
|
# 94:14:57:15:13:50 Meeting
|
|
# 去除mac地址
|
|
ssid = ssid.split(' ')[1:]
|
|
ssid = ''.join(ssid)
|
|
if ssid == '--':
|
|
continue
|
|
if ssid in ssid_list:
|
|
continue
|
|
ssid_list.append(ssid)
|
|
|
|
# 提取强度
|
|
strength = None
|
|
for i in range(len(columns)):
|
|
if columns[i] == 'Mbit/s':
|
|
strength = columns[i+1]
|
|
break
|
|
print("MAC地址:", mac_address)
|
|
print("Wi-Fi名称:", ssid)
|
|
print("强度:", strength)
|
|
|
|
wifi_list.append({'ssid': ssid, 'signal': strength, 'mac': mac_address})
|
|
if len(wifi_list) == 15:
|
|
break
|
|
with open('scaned_wifi_list.json', 'w') as f:
|
|
json.dump(wifi_list, f)
|
|
print(f"{datetime.datetime.now()}: Wi-Fi scaned list: {wifi_list}")
|
|
|
|
|
|
return wifi_list
|
|
|
|
if __name__ == '__main__':
|
|
wifi_list = scan_wifi() |