如何用Python获取Raspberry Pi当前连接的WiFi/有线网络名称
树莓派获取当前连接网络名称实现方案
以下方案适配大部分Raspberry Pi OS版本,你可以根据你的系统环境选择对应方法:
方案1:适用于Raspberry Pi OS Bookworm及之后版本(默认使用NetworkManager管理网络)
直接调用nmcli命令即可快速拿到结果:
- 获取当前连接的WiFi名称:
nmcli -t -f active,ssid dev wifi | grep '^yes' | cut -d':' -f2 - 获取当前连接的有线网络名称:
nmcli -g GENERAL.CONNECTION device show 有线接口名你可以通过
ip link命令查询系统的有线接口名,通常为end0或eth0
如果你的kiosk系统是用Python开发的,可以直接用subprocess调用命令获取结果,示例代码如下:
import subprocess def get_current_network_name(): # 优先获取WiFi SSID try: wifi_result = subprocess.run( ["nmcli", "-t", "-f", "active,ssid", "dev", "wifi"], capture_output=True, text=True, check=True ) for line in wifi_result.stdout.strip().split("\n"): if line.startswith("yes:"): return line.split(":", 1)[1] except subprocess.SubprocessError: pass # WiFi未连接时获取有线网络名称 try: eth_result = subprocess.run( ["nmcli", "-g", "GENERAL.CONNECTION", "device", "show", "end0"], capture_output=True, text=True, check=True ) eth_name = eth_result.stdout.strip() if eth_name and eth_name != "--": return eth_name except subprocess.SubprocessError: pass return "未识别网络"
方案2:适用于Raspberry Pi OS Bullseye及更早版本(默认使用dhcpcd管理网络)
使用系统内置的轻量命令获取:
- 获取当前连接的WiFi名称:
iwgetid -r
无输出则代表当前未连接WiFi - 获取当前连接的有线网络标识:
可以先通过ip route | grep default | awk '{print $5}'拿到当前使用的有线接口名,直接返回{接口名} 有线网络即可满足展示需求,也可以读取/etc/dhcpcd.conf中对应接口的自定义配置名称
注意事项
- 运行命令的用户需要加入
netdev用户组才能获取网络信息,若你的kiosk程序使用非默认pi用户运行,执行sudo usermod -aG netdev 运行用户名配置权限即可 - 如果你的系统同时连接了WiFi和有线网络,你可以根据自己的需求优先返回其中任意一种网络的名称
内容的提问来源于stack exchange,提问作者Werbrouck Bram
相关产品推荐
相关产品推荐

