是否有 API 或软件可以获取 Mac 上 WiFi 信号的准确强度?
Is there an API or software to get accurate strength of a WiFi signals on Mac?
是否有 API、shell 命令或 AppleScript 可以准确读取 Mac OSX 中的当前 WiFi 强度?
仅供参考,我还可以打开浏览器并使用 JavaScript(如果它具有可用的值)。
我想做的是检查厨房或客厅不同位置的 WiFi 强度。我需要检查每个地点的 WiFi 强度。如果它很低,我会搬到一个新的地方。 OSX 显示的 WiFi 条对我来说数据不足。
我必须承认,我不知道 OS X 是否具有易于访问的接收强度指标等信息。
我可以从 RF 通信工程师的角度告诉您,显示的信号强度完全不准确,更不能真正预测通信的效果。
如您所说,条形图对任何人来说都不够信息 -- 事实上,您已经可以拥有五种不同数量的条形图,这通常会大大夸大这些东西可用于操作系统的准确性. WiFi 质量远远超过接收到的信号强度,因此您无法直接将条形图映射到质量。我真的不知道为什么 GUI 会继续包含该措施而不是例如衡量沿途丢失了多少数据包(这实际上是 OS 可以观察到的东西)。
我假设您想做类似 "if WiFi A is weak, switch to WiFi B" 或类似的事情。我认为这样做的正确方法实际上至少是 OSI 层模型的两个步骤。我个人只是在互联网上的某个地方设置了一个服务器,它可以回复 UDP 数据包并且可以 ping 通。然后,您只需使用标准 ping 来确定延迟是否仍然可以接受,并对服务器数据包使用短 UDP 来计算您看到的数据包丢失量(您也可以通过 ping
和 ICMP 来做到这一点,但这通常不允许您每秒发送几百个数据包——我会定期这样做)。
这是一个使用 CoreWLAN
框架的简单 Python 脚本:
#!/usr/bin/python
from AppKit import CWInterface
IFACE = 'en0'
NAME = 'MyWifiNetwork'
interface = CWInterface.interfaceWithName_(IFACE)
results, error = interface.scanForNetworksWithName_error_(NAME, None)
for result in results:
print 'SSID:', result.ssid()
print 'RSSI:', result.rssiValue()
这是一个隐藏得很好的gem。只需在 Finder 中导航到文件夹
/System/Library/CoreServices/Applications
和运行
Wireless Diagnostics.app
它有很多内置工具。
在你点击"Continue"之前(在第一个window)你应该检查"Window" 可用工具的菜单:
- 精确频道的 WiFi 嗅探器 ⌘6
- 性能分析器(signal/Noise)⌘5
- Wifi 扫描器(可用网络)⌘4
- 某些协议的记录器(如 DHCP、DNS 等)⌘3
- 有关已连接 WiFI 的信息 ⌘2(与按住 Alt 键并单击菜单栏 WiFi 时相同)
回复关于1.21吉瓦的问题
关于以上工具:
- 仅当 您单击第一个屏幕中的 "continue" 按钮时,才会收集报告 。
- 正如我上面所说,您不需要点击它。
- 您可以使用这些工具而无需收集任何报告。
关于报告发送:
- 该应用会警告您有关数据收集的信息。
- 报告已放入您的桌面。 (作为一个名为
date_string.wdmon
的文件)
- 应用程序不会自动向 Apple 发送报告的任何部分。
- 如果需要,您可以将它发送给苹果 - 我个人也不想。 :)
- 如果用户愚蠢到双击报告文件(触发报告发送的原因),在他之后,阅读第一个屏幕上的警告他自己的错。
- 您可以监控自己完成了哪些传出连接
总结:
- 您甚至不需要开始收集报告。 (只是不要点击继续按钮)
- 你 可以使用 工具 而无需 报告收集 - 正如我所说,它们在
Window menu
中可用它已经在我的答案中了。
- 如果您不知道发生了什么,请不要双击文件
警告用户数据收集是一件好事。感谢您的明确警告。
有一个内置的机场命令可以执行此操作。它的位置是:
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport
为方便起见,您可以创建一个 link,这样您就可以从任何地方 运行 命令。
sudo ln -s /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport /usr/sbin/airport
获取有关当前无线网络的信息
airport -I
http://osxdaily.com/2007/01/18/airport-the-little-known-command-line-wireless-utility/
假设您已经创建了 link,一个将值转换为百分比并显示通知的 AppleScript:
set wirelessRSSI to do shell script "airport -I | grep CtlRSSI | sed -e 's/^.*: //g'"
set wirelessStrength to (wirelessRSSI + 100) * 2
display notification "Wireless sigal quality: " & wirelessStrength & "%"
是否有 API、shell 命令或 AppleScript 可以准确读取 Mac OSX 中的当前 WiFi 强度?
仅供参考,我还可以打开浏览器并使用 JavaScript(如果它具有可用的值)。
我想做的是检查厨房或客厅不同位置的 WiFi 强度。我需要检查每个地点的 WiFi 强度。如果它很低,我会搬到一个新的地方。 OSX 显示的 WiFi 条对我来说数据不足。
我必须承认,我不知道 OS X 是否具有易于访问的接收强度指标等信息。
我可以从 RF 通信工程师的角度告诉您,显示的信号强度完全不准确,更不能真正预测通信的效果。
如您所说,条形图对任何人来说都不够信息 -- 事实上,您已经可以拥有五种不同数量的条形图,这通常会大大夸大这些东西可用于操作系统的准确性. WiFi 质量远远超过接收到的信号强度,因此您无法直接将条形图映射到质量。我真的不知道为什么 GUI 会继续包含该措施而不是例如衡量沿途丢失了多少数据包(这实际上是 OS 可以观察到的东西)。
我假设您想做类似 "if WiFi A is weak, switch to WiFi B" 或类似的事情。我认为这样做的正确方法实际上至少是 OSI 层模型的两个步骤。我个人只是在互联网上的某个地方设置了一个服务器,它可以回复 UDP 数据包并且可以 ping 通。然后,您只需使用标准 ping 来确定延迟是否仍然可以接受,并对服务器数据包使用短 UDP 来计算您看到的数据包丢失量(您也可以通过 ping
和 ICMP 来做到这一点,但这通常不允许您每秒发送几百个数据包——我会定期这样做)。
这是一个使用 CoreWLAN
框架的简单 Python 脚本:
#!/usr/bin/python
from AppKit import CWInterface
IFACE = 'en0'
NAME = 'MyWifiNetwork'
interface = CWInterface.interfaceWithName_(IFACE)
results, error = interface.scanForNetworksWithName_error_(NAME, None)
for result in results:
print 'SSID:', result.ssid()
print 'RSSI:', result.rssiValue()
这是一个隐藏得很好的gem。只需在 Finder 中导航到文件夹
/System/Library/CoreServices/Applications
和运行
Wireless Diagnostics.app
它有很多内置工具。
在你点击"Continue"之前(在第一个window)你应该检查"Window" 可用工具的菜单:
- 精确频道的 WiFi 嗅探器 ⌘6
- 性能分析器(signal/Noise)⌘5
- Wifi 扫描器(可用网络)⌘4
- 某些协议的记录器(如 DHCP、DNS 等)⌘3
- 有关已连接 WiFI 的信息 ⌘2(与按住 Alt 键并单击菜单栏 WiFi 时相同)
回复关于1.21吉瓦的问题
关于以上工具:
- 仅当 您单击第一个屏幕中的 "continue" 按钮时,才会收集报告 。
- 正如我上面所说,您不需要点击它。
- 您可以使用这些工具而无需收集任何报告。
关于报告发送:
- 该应用会警告您有关数据收集的信息。
- 报告已放入您的桌面。 (作为一个名为
date_string.wdmon
的文件) - 应用程序不会自动向 Apple 发送报告的任何部分。
- 如果需要,您可以将它发送给苹果 - 我个人也不想。 :)
- 如果用户愚蠢到双击报告文件(触发报告发送的原因),在他之后,阅读第一个屏幕上的警告他自己的错。
- 您可以监控自己完成了哪些传出连接
总结:
- 您甚至不需要开始收集报告。 (只是不要点击继续按钮)
- 你 可以使用 工具 而无需 报告收集 - 正如我所说,它们在
Window menu
中可用它已经在我的答案中了。 - 如果您不知道发生了什么,请不要双击文件
警告用户数据收集是一件好事。感谢您的明确警告。
有一个内置的机场命令可以执行此操作。它的位置是:
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport
为方便起见,您可以创建一个 link,这样您就可以从任何地方 运行 命令。
sudo ln -s /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport /usr/sbin/airport
获取有关当前无线网络的信息
airport -I
http://osxdaily.com/2007/01/18/airport-the-little-known-command-line-wireless-utility/
假设您已经创建了 link,一个将值转换为百分比并显示通知的 AppleScript:
set wirelessRSSI to do shell script "airport -I | grep CtlRSSI | sed -e 's/^.*: //g'"
set wirelessStrength to (wirelessRSSI + 100) * 2
display notification "Wireless sigal quality: " & wirelessStrength & "%"