Mac : 当设备通过蓝牙连接时启动命令

Mac : Launch command when device connected by bluetooth

我想在特定的外部蓝牙设备连接到我的 Mac 时启动 shell 命令。

一个很好的方法(无需安装第三方软件)是在 ~/Library/LaunchAgents

中添加一个 plist 文件

this page上有一个wifi连接到特定位置时启动事件的例子。这是通过观看特定文件来完成的:

<key>WatchPaths</key>
<array>
   <string>/Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist</string>
</array>

您认为可以对蓝牙事件做同样的事情吗?

感谢您的帮助!

在 ~/Library/LaunchAgents 中创建一个文件,其中包含:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>

    <key>Label</key>
    <string>Smartcard reader</string>

    <key>ProgramArguments</key>
    <array>
        <string>/Users/USERNAME/Library/Scripts/script.bash</string>
    </array>

    <key>WatchPaths</key>
    <array>
        <string>/Library/Preferences/com.apple.Bluetooth.plist</string>
    </array>

</dict>
</plist>

并且在/Users/USERNAME/Library/Scripts/script.bash中我们可以测试连接的设备是否正确:

if [ $(system_profiler SPBluetoothDataType | grep "Smart Reader 2501" | wc -l) -eq 1 ] ; then
    echo "Smartcard connected"
fi

使用

启动服务
launchctl load ~/Library/LaunchAgents/yourscript