web-dev-qa-db-ja.com

Macの範囲内のすべてのBluetoothデバイスを一覧表示するコマンドラインインターフェイスはありますか?

すべての範囲内のBluetoothデバイスを、理想的にはホスト名とともにリストしたいのですが、MACアドレスで十分です。アクティブスキャンを実行して、以前にペアリングされたデバイスを一覧表示するデバイスではなく、デバイスが近くにあるかどうかをポーリングできるコマンドが必要です。

私のユースケースは、BluetoothヘッドフォンまたはiPhoneがMacの範囲内にあるかどうかを検出して、セキュリティ設定の変更(たとえば、Sudoタイムアウト)をトリガーします。私はかなりのグーグルをやったが、見つけることができるのはiOS Swiftのコード例だけだ。 OS X Swiftのコード例、AppleScript、ターミナルユーティリティ、または優れたドキュメントへのポインターに満足します。

これまでこれらのオプションを見てきました。

  • blued:MACアドレスのリストを出力しますが、デバイスが範囲内または範囲外に出たり接続したりしても、ホスト名まで一致しない場合は変更されないようです。
  • blueutilbrew install blueutil):電源名のみを出力し、デバイス名は出力しません
  • bluetoothaudiod:使用可能なインターフェイスがありません
  • このObjective-Cコード XCodeでターミナルベースのBluetoothモニターを作成しますか? :コンパイル時にいくつかのエラーが発生するため、テストが困難です
  • AppleScriptを使用してBluetooth Explorer.app GUIから読み取る
  • dtraceを使用してBluetooth Explorer.appがリストを計算する方法を確認する:難しい最後の手段
  • Proximity App from this forum post :コマンドラインインターフェイスがないため、リモートでクエリすることはできません。後で読み取るために状態をファイルに保存するスクリプトを作成できますが、一度に1つのデバイスに対してのみ機能します。

2017/01の編集:Swiftで近くのデバイスを見つけるための詳細を含むこのSO回答を見つけました。
SwiftでBluetoothデバイスの範囲内にあるデバイスを一覧表示します

2017/10の編集:SO 3および4.0の更新されたSwift回答が見つかりました: Swift 3.0を使用する周辺のBluetoothデバイス

13
Nick Sweeting

ターミナルでは、コマンド:

system_profiler SPBluetoothDataType

ペアリングされたデバイスやその名前、MACアドレスなど、Bluetoothに関するすべての詳細を提供します。残念ながら結果は少し多すぎますが、sedまたはgrepコマンドを使用すると、必要なものを抽出する必要があります。

18
pbell