すべての範囲内のBluetoothデバイスを、理想的にはホスト名とともにリストしたいのですが、MACアドレスで十分です。アクティブスキャンを実行して、以前にペアリングされたデバイスを一覧表示するデバイスではなく、デバイスが近くにあるかどうかをポーリングできるコマンドが必要です。
私のユースケースは、BluetoothヘッドフォンまたはiPhoneがMacの範囲内にあるかどうかを検出して、セキュリティ設定の変更(たとえば、Sudoタイムアウト)をトリガーします。私はかなりのグーグルをやったが、見つけることができるのはiOS Swiftのコード例だけだ。 OS X Swiftのコード例、AppleScript、ターミナルユーティリティ、または優れたドキュメントへのポインターに満足します。
これまでこれらのオプションを見てきました。
blued
:MACアドレスのリストを出力しますが、デバイスが範囲内または範囲外に出たり接続したりしても、ホスト名まで一致しない場合は変更されないようです。blueutil
(brew install blueutil
):電源名のみを出力し、デバイス名は出力しませんbluetoothaudiod
:使用可能なインターフェイスがありませんBluetooth Explorer.app
GUIから読み取るdtrace
を使用してBluetooth Explorer.app
がリストを計算する方法を確認する:難しい最後の手段2017/01の編集:Swiftで近くのデバイスを見つけるための詳細を含むこのSO回答を見つけました。
SwiftでBluetoothデバイスの範囲内にあるデバイスを一覧表示します
2017/10の編集:SO 3および4.0の更新されたSwift回答が見つかりました: Swift 3.0を使用する周辺のBluetoothデバイス
ターミナルでは、コマンド:
system_profiler SPBluetoothDataType
ペアリングされたデバイスやその名前、MACアドレスなど、Bluetoothに関するすべての詳細を提供します。残念ながら結果は少し多すぎますが、sedまたはgrepコマンドを使用すると、必要なものを抽出する必要があります。