树莓派通过扫描附近WiFi进行WiFi连接代码
时间: 2024-01-03 07:03:01 浏览: 104
以下是通过扫描附近 WiFi 并连接的 Python 代码:
```python
import os
import subprocess
import time
# 扫描附近 WiFi 热点
def scan_wifi():
cmd = "sudo iwlist wlan0 scan | grep ESSID"
p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = p.communicate()
networks = out.decode().split("\n")
wifi_list = []
for network in networks:
if 'ESSID' in network:
wifi_list.append(network.split(':')[1].strip().replace('"', ''))
return wifi_list
# 连接 WiFi
def connect_wifi(ssid, password):
cmd = 'sudo wpa_passphrase {} {} | sudo tee -a /etc/wpa_supplicant/wpa_supplicant.conf > /dev/null'.format(ssid, password)
os.system(cmd)
os.system('sudo wpa_cli -i wlan0 reconfigure')
# 选择要连接的 WiFi
def select_wifi():
wifi_list = scan_wifi()
print("可用 WiFi 列表:")
for i, wifi in enumerate(wifi_list):
print("{}. {}".format(i+1, wifi))
wifi_index = int(input("请输入要连接的 WiFi 序号:"))
wifi_ssid = wifi_list[wifi_index-1]
wifi_password = input("请输入 WiFi 密码:")
connect_wifi(wifi_ssid, wifi_password)
print("连接成功!")
if __name__ == '__main__':
select_wifi()
```
代码中使用了 Linux 命令 `iwlist` 和 `wpa_cli` 来扫描 WiFi 和连接 WiFi。其中,`scan_wifi()` 函数用于扫描附近的 WiFi,返回可用的 WiFi 列表;`connect_wifi()` 函数用于连接指定的 WiFi,需要传入 WiFi 的 SSID 和密码;`select_wifi()` 函数用于选择要连接的 WiFi。
使用时,运行该代码即可选择要连接的 WiFi,输入序号和密码后,即可连接成功。需要注意的是,该代码需要在具有 WiFi 功能的树莓派设备上运行。
阅读全文