我正在尝试使用蓝牙加密狗将我的手机连接到我的 RaspberryPi(不尝试做任何惊天动地的事情,只需确定我的手机何时在该区域内)。如果我打开手机的蓝牙并发出以下命令,我会得到以下输出(在有人开始向我宣扬这是如何违反安全性之前,让我提醒你这不是我实际的手机蓝牙 ID):
命令:
sudo rfcomm connect 0 AA:BB:CC:DD:EE:FF 10
echo $?
输出:
Connected /dev/rfcomm0 to AA:BB:CC:DD:EE:FF on channel 10
Press CTRL-C for hangup
0
现在,如果我关闭手机的蓝牙并发出相同的命令,我会得到以下输出(同样,所有 id 都已更改以保护无辜者)。
命令:
sudo rfcomm connect 0 AA:BB:CC:DD:EE:FF 10
echo $?
输出:
Can't connect RFCOMM socket: Host is down
0
由于我试图确定手机何时在房间内以及何时离开,我需要某种方式(其他方式)来检测加密狗何时可以连接到它,何时不能连接到它。我怎样才能实现这一目标?(注意:我尝试将手机从建筑物中移除,甚至完全关闭)
编辑:我考虑过捕获stderr
消息并像这样测试它
error=$`sudo rfcomm connect 0 AA:BB:CC:DD:EE:FF 10 >/dev/null` &
if [ $error=="Can't connect RFCOMM socket: Host is down" ]
then
...
fi;
但问题是 rfcomm 必须在后台运行。