Bash 跟踪不断更新的日志文件,并在找到字符串时执行操作

Bash 跟踪不断更新的日志文件,并在找到字符串时执行操作,bash,shell,tail,gpio,odroid,Bash,Shell,Tail,Gpio,Odroid,我有一个odroid-c1+,我想用它作为pi-hole服务器(基本上是用于ad的dns黑洞) 我想在日志文件中发现字符串时触发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 如何将tailf触发器添加到此示例中?未经测试,但我相

我有一个odroid-c1+,我想用它作为pi-hole服务器(基本上是用于ad的dns黑洞)

我想在日志文件中发现字符串时触发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

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

未经测试,但我相信您可以将
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使用的。

感谢您为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)点击绿色复选标记,将解决问题的答案标记为“接受”。除非你提出了与所提供的完全不同的解决方案,否则你不需要对自己的问题给出答案。