跟踪不断更新的日志文件并在找到字符串时执行操作
tail a constantly updated logfile and perform an action when a string is found
我有一个 odroid-c1+,我想用作 pi-hole 服务器(基本上是用于广告的 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
再次感谢您的帮助!
我有一个 odroid-c1+,我想用作 pi-hole 服务器(基本上是用于广告的 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
再次感谢您的帮助!