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

时间:2016-03-17 23:05:35

标签: bash shell tail gpio odroid

我有一个odroid-c1 +,我想用它作为pi-hole服务器(基本上是dns blackhole for ad')

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

我也已经安装了布线工作,示例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触发器添加到此样本中?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

感谢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

再次感谢您的帮助!