【发布时间】:2011-05-27 17:32:13
【问题描述】:
有没有什么方法可以在 Mac OS X 上通过 shell 脚本获取当前无线网络的 SSID?
【问题讨论】:
有没有什么方法可以在 Mac OS X 上通过 shell 脚本获取当前无线网络的 SSID?
【问题讨论】:
命令
/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -I
将为您提供有关当前无线网络连接的详细信息。
要具体获取 SSID,请使用以下命令:
/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -I | awk -F: '/ SSID/{print $2}'
要检索可能包含冒号和空格的 SSID 名称:
/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -I | awk -F' SSID: ' '/ SSID: / {print $2}'
【讨论】:
awk 使用: 作为分隔符,您将获得整个SSID:awk -F':' '/ SSID/ {print $2}'
awk -F' SSID: ' '/ SSID: / { print "x",$2,"x"}'
哪里不是有一个轮子需要重新发明吗?
networksetup -getairportnetwork en1 | cut -c 25-
是您在 10.6 上使用的,10.7 将“硬件端口”名称从“机场”更改为“Wi-Fi”,因此您会少一个字母,
aru$ networksetup -getairportnetwork en1 | cut -c 24-
Yorimichi
如果设备名称不是en1,则需要先获取正确的设备名称,而不是对应的SSID:
networksetup -listallhardwareports | awk '/Wi-Fi/{getline; print $2}' | xargs networksetup -getairportnetwork
【讨论】:
cut,你可以运行networksetup -getairportnetwork en1 | awk -F": " '{print $2}',无论标签包含“机场”还是“Wi-Fi”,它都可以工作。
e1 在这个答案中似乎是这种情况。其他人有e0。这当然是一个简单的编辑,但如果您尝试使其通用,@Chetan 的答案似乎更容易
networksetup -getairportnetwork en1 | cut -d ' ' -f 4 工作正常,它不依赖于操作系统版本
以下内容已在 OS X 上进行了测试,打印的 SSID 没有任何硬编码的列宽:
system_profiler SPAirPortDataType | awk -F':' '/Current Network Information:/ {
getline
sub(/^ */, "")
sub(/:$/, "")
print
}'
本质上,这会获取system_profiler SPAirPortDataType 的输出,并在“Current Network Information:”修剪前导空格和尾随冒号后打印行(因为SSID 可以包含:s)。
【讨论】:
system_profiler 在我的 OS X 10.8 上有一点延迟。 networksetup 需要机场接口名称。我更喜欢airport | sed -n 's/^ *SSID: //p'
airport --getinfo | sed -n 's/^ *SSID: //p'