是否有API或软件可以在Mac上获得准确的WiFi信号强度?

时间:2015-06-15 07:01:01

标签: macos shell applescript

是否有API,shell命令或AppleScript可以准确读取Mac OSX中当前的WiFi强度?

仅供参考我还可以打开浏览器并使用JavaScript(如果有值)。

我要做的是检查厨房或客厅中不同位置的WiFi强度。我需要检查每个点的WiFi强度。如果它很低我会移动到一个新的位置。 OSX显示的WiFi栏对我来说数据不足。

4 个答案:

答案 0 :(得分:4)

这是一个使用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()

答案 1 :(得分:3)

有一个内置的机场指挥部就可以完成。它的位置是:

 sudo ln -s /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport /usr/sbin/airport

为方便起见,您可以创建一个链接,让您可以从任何地方运行命令。

airport -I

获取有关当前无线网络的信息

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 & "%"

http://osxdaily.com/2007/01/18/airport-the-little-known-command-line-wireless-utility/

假设您已创建链接,AppleScript会将值转换为百分比并显示通知:

<ComponentGroup Id="BinComponents" Directory="BIN">
  <Component Id="BinComponent" Guid="23D229D0-06EE-49f4-80B4-6D7136500721">

    <File Id="MyProjectOutput" Name="MyProject.exe" Source="MyProject\bin\MyProject.exe"/>
    <ServiceControl Id="RemoveService"
       Stop="both"
       Remove="both"
       Name="MyProject.exe"
       Wait="yes" /> <!-- Stop running MyProject instances -->

  </Component>
</ComponentGroup>

答案 2 :(得分:1)

我必须承认,我不知道OS X是否具有易于访问的接收强度指标等信息。

从RF通信工程师的角度来看,我可以告诉你的是,所显示的信号强度绝对准确,而且实际上预测通信的工作效果甚至更低。

正如你所说,条形图对任何人来说都不够信息 - 事实上,你可以拥有五种不同数量的条形通常会大大夸大这些操作系统可用的准确性。 WiFi质量远远超过接收信号强度,因此无法直接将条形图映射到质量。我真的不知道为什么GUI继续包括那个措施而不是例如衡量一路上丢失了多少数据包(这实际上是操作系统可以观察到的)。

我假设你想做一些像“如果WiFi A很弱,切换到WiFi B”或类似的东西。我认为正确的方法实际上是OSI层模型的两个步骤,至少。我个人只是在互联网上的某个地方设置了一个回复UDP数据包并且可以ping通的服务器。然后,您只需使用标准ping来确定延迟是否仍然可以接受,并使用短UDP来查找服务器数据包以确定您看到的丢包量(您可以通过ping和ICMP执行此操作,但这通常不会让你每秒发送几百个数据包 - 这就是我定期做的事情。

答案 3 :(得分:0)

这是一个隐藏得很好的宝石。只需在Finder中导航到文件夹

即可
/System/Library/CoreServices/Applications

并运行

Wireless Diagnostics.app

它有许多内置工具。

之前点击“继续”(在第一个窗口中),您应该在“窗口”菜单中查看可用工具:

  • 确切频道的WiFi嗅探器⌘6
  • 性能分析器(信号/噪音)⌘5
  • Wifi扫描仪(可用网络)⌘4
  • 某些协议的记录器(如DHCP,DNS等)⌘3
  • 有关已连接的WiFI ⌘2的信息(与您在菜单栏上按住Alt键时相同)

回复关于1.21千兆瓦的问题

关于上述工具:

  • 仅当您单击第一个屏幕中的“继续”按钮时,才会收集报告。
    • 正如我上面所说,你不需要点击它。
    • 可以使用工具而无需收集任何报告。

关于报告发送:

  • 该应用警告您收集数据。
  • 报告已放入您的桌面。 (作为名为date_string.wdmon的文件)
  • 应用不会自动向Apple发送报告的任何部分。
  • 你可以把它发送给苹果,如果想要 - 我个人也不想要。 :)
  • 如果用户愚蠢到双击报告文件(触发报告发送的内容),之后,在第一个屏幕上读取警告则是他自己的错误。< / LI>
  • 您可以自己监控传出的连接是什么

要点:

  • 不需要甚至开始收集报告。 (只是不要点击继续按钮)
  • 可以使用工具而不收集报告 - 我们在Window menu中提供了这些工具,正如我在答案中已经说过的那样。
  • 如果您不知道发生了什么,请不要双击文件

警告用户有关数据收集是一件好事。感谢您的明确警告。