wifi_hotpot/scan_wifi.py

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()