欢迎各位兄弟 发布技术文章
这里的技术是共享的
/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 脚本。