Bash 跟踪不断更新的日志文件,并在找到字符串时执行操作
我有一个odroid-c1+,我想用它作为pi-hole服务器(基本上是用于ad的dns黑洞) 我想在日志文件中发现字符串时触发led闪烁 我还安装了wiringpi并开始工作,示例blink.sh按预期工作,如下所示: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触发器添加到此示例中?未经测试,但我相
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)点击绿色复选标记,将解决问题的答案标记为“接受”。除非你提出了与所提供的完全不同的解决方案,否则你不需要对自己的问题给出答案。