欢迎各位兄弟 发布技术文章
这里的技术是共享的
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -s | awk '{print $1}' | sed '1d' #仅获取第一列 ,移除第一行(是列名)
在 macOS 上,你可以使用 airport
工具或 networksetup
命令来获取附近的 Wi-Fi 网络信息。以下是几种方法:
airport
工具(需管理员权限)查找 airport
工具路径:
通常位于 /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport
。
扫描附近 Wi-Fi:
运行以下命令:
bashsudo /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -s
-s
( scan )表示扫描附近的 Wi-Fi 网络。
需要输入管理员密码(sudo
权限)。
输出示例:
SSID BSSID RSSI CHANNEL HT CC SECURITY
Home 12:34:56:78:90:ab -65 11 Y US WPA2(PSK)
Cafe aa:bb:cc:dd:ee:ff -80 6 Y US WPA2(Enterprise)
networksetup
命令列出所有 Wi-Fi 接口(通常为 en0
或 en1
):
bashnetworksetup -listallhardwareports | grep -A 1 "Wi-Fi"
扫描附近网络:
bashnetworksetup -setairportpower en0 on # 确保 Wi-Fi 开启 networksetup -getairportnetwork en0 # 获取当前连接的 Wi-Fi
注意:networksetup
不能直接列出所有附近的 Wi-Fi,但可以结合系统报告。
sudo
)运行以下命令获取详细的 Wi-Fi 环境信息:
bashsystem_profiler SPAirportDataType
输出包含当前连接和扫描到的网络详情(如信号强度、信道等)。
将以下脚本保存为 scan_wifi.sh
,并运行 chmod +x scan_wifi.sh
:
bash#!/bin/bash # 方法 1: 使用 airport 工具扫描 AIRPORT_PATH="/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport" if [ -f "$AIRPORT_PATH" ]; then echo "=== 附近的 Wi-Fi 网络 (via airport) ===" sudo "$AIRPORT_PATH" -s else echo "错误: airport 工具未找到。" fi # 方法 2: 通过系统报告获取 echo -e "\n=== 系统报告中的 Wi-Fi 信息 ===" system_profiler SPAirportDataType | grep -E "SSID|BSSID|RSSI|Channel|Security"
权限问题:airport
需要 sudo
权限。
Wi-Fi 开关:确保 Wi-Fi 已开启(可通过菜单栏或命令 networksetup -setairportpower en0 on
)。
兼容性:不同 macOS 版本可能略有差异,建议测试确认。
如果需要进一步处理(如解析 JSON 输出),可以结合 jq
工具或 Python 脚本。