管道超时cmd到grep需要root

时间:2017-01-31 13:04:27

标签: grep timeout bluetooth-lowenergy raspberry-pi3 piping

这里有一个bash noob。尝试为Home Assistant编写一个单行BLE标签存在检测器(RPI-3上的内置BLE模块显着降低了Home Assistant)。

需要一些帮助来完成这项工作:

$ timeout -s SIGINT 5s hcitool -i hci0 lescan | grep 00:00:00:00:00:00

发生了什么(或应该发生什么):

  1. hcitool运行5s(优雅地杀死5s后)
  2. 输出通过管道传输到grep以检测一个特定的MAC
  3. 命令返回匹配的mac
  4. 但是,此命令不返回任何内容,只返回状态码130($ echo $?)

    但这有效:

    $ sudo timeout -s SIGINT 5s hcitool -i hci0 lescan | grep 00:00:00:00:00:00
    

    是的,我已经设置了此主题中描述的缺失上限:https://unix.stackexchange.com/questions/96106/bluetooth-le-scan-as-non-root

    由于设置的功能,这也可以正常工作(返回检测到的设备列表,在5秒后优雅地被杀死:

    $ timeout -s SIGINT 5s hcitool -i hci0 lescan
    

    我做错了什么?为什么grep的管道似乎需要root? (因为我知道它不应该)

    致以最诚挚的问候,

    斯蒂芬

1 个答案:

答案 0 :(得分:0)

啊解决了;)

似乎是执行顺序:)。使用sudo与使用相同的效果:

$ (timeout -s SIGINT 5s hcitool -i hci0 lescan | grep 00:00:00:00:00:00)