是否有命令行界面列出mac上范围内的所有蓝牙设备?

Nic*_*ing 14 macos applescript bluetooth objective-c swift

我想列出所有范围内的蓝牙设备,理想情况下是主机名,但MAC地址就足够了.我需要一个执行主动扫描的命令,以便我可以查看我的设备是否在附近,而不是列出以前配对设备的设备.

我的用例是检测我的蓝牙耳机或iPhone是否在我的Mac范围内,以触发安全设置更改(例如sudo超时).我已经做了很多谷歌搜索,我似乎能找到的唯一的东西是iOS快速代码示例.我很满意OS X Swift代码示例,AppleScript,终端实用程序或指向优秀文档的指针.

到目前为止我已经看过这些选项了:

  • blued:打印一个mac地址列表,但是当设备进入或超出范围或连接时它们似乎没有改变,并且它们与主机名不匹配
  • blueutil(brew install blueutil):仅打印电源状态,而不是设备名称
  • bluetoothaudiod:没有可用的界面
  • 这个Objective-C代码在XCode中创建一个基于终端的蓝牙监视器?:编译时我遇到了几个错误,所以很难对它进行测试
  • 使用AppleScript将其读出Bluetooth Explorer.appGUI
  • 使用dtrace来看看如何Bluetooth Explorer.app计算列表:困难不得已而为之
  • 来自此论坛帖子Proximity App :没有命令行界面,所以我无法远程查询它.我可以编写一个脚本,将状态存储在一个文件中以便稍后阅读,但它一次只适用于一个设备.

编辑2017/01:找到这个SO答案,详细介绍如何在Swift中查找附近的设备:列出 Swift
中蓝牙设备范围内的设备

编辑2017/10:找到Swift 3和4.0的更新SO答案:使用Swift 3.0附近的蓝牙设备

pbe*_*ell 18

在终端中,命令:

system_profiler SPBluetoothDataType
Run Code Online (Sandbox Code Playgroud)

为您提供有关蓝牙的所有详细信息,包括配对的设备及其名称,MAC地址.遗憾的是,结果有点过多,但是使用sed或grep命令,您应该提取所需内容.

  • 不幸的是,这并没有提供我需要的信息。该列表列出了已配对设备的历史记录,但未显示它们当前是否在范围内。我正在寻找一个活动命令,该命令进行扫描以查找附近的设备,或者返回给定设备是否在范围内。 (6认同)
  • Fwiw,2022 年,在 macOS Monterey 上,此命令将设备分为两组:“已连接:”和“未连接:” (2认同)