【问题标题】:tail a constantly updated logfile and perform an action when a string is found跟踪不断更新的日志文件并在找到字符串时执行操作
【发布时间】:2016-03-17 23:05:34
【问题描述】:

我有一个 odroid-c1+,我想用作 pi-hole 服务器(基本上是用于广告的 dns blackhole)

我想在日志文件中找到字符串时触发 LED 闪烁。

我还安装了wiringpi,并且可以正常工作,blink.sh 示例按预期工作,如下所示:

PIN=0

gpio mode $PIN out

while true; do
  gpio write $PIN 1
  sleep 0.5
  gpio write $PIN 0
  sleep 0.5
done

如何将尾部触发器添加到此示例中?

【问题讨论】:

    标签: bash shell tail gpio odroid


    【解决方案1】:

    未经测试,但我相信您可以将 tail 的输出输入到您的 while 循环中:

    #!/bin/bash
    pin=0
    gpio mode $pin out
    tail -f logfile | while read entry
    do
       if [ "$entry" = "string" ]; then
           gpio write $pin 1
           sleep 0.5
           gpio write $pin 0
           sleep 0.5
        fi
    done
    

    大写的变量名传统上是为 shell 使用而保留的。

    【讨论】:

      【解决方案2】:

      感谢 miken32 的精彩开始!

      我已经能够获取您的样本并通过以下方式对其进行调整以适用于我的应用程序:

      #!/bin/bash
      pin=0
      gpio mode $pin out
      gpio write $pin 0
      tailf /var/log/pihole.log | while read INPUT
      do
         if [[ "$INPUT" == *"/etc/pihole/gravity.list"* ]]; then
             gpio write $pin 1
             sleep 1
             gpio write $pin 0
          fi
      done
      

      再次感谢您的帮助!

      【讨论】:

      • 很高兴我能帮上忙。该网站的工作方式是您 a) 对您认为有帮助的任何答案进行投票,并且 b) 通过单击绿色复选标记将解决您的问题的答案标记为“已接受”。除非您想出与提供的解决方案完全不同的解决方案,否则您无需针对自己的问题发布答案。
      猜你喜欢
      • 2015-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      相关资源
      最近更新 更多