如果关键字触发则监视日志文件的 Shell 脚本 运行 snmptrap 命令

Shellscript to monitor a log file if keyword triggers then run the snmptrap command

有没有办法使用 shell script 来监控日志文件,比如 tail -f /var/log/errorlog.txt然后如果出现down关键字,则生成SNMPTRAPsnmp manager并继续监控

我有一个 SNMP 脚本可用于生成 SNMPTrap 它看起来像

snmptrap -v v2c -c community host "Error message"

假设脚本名称是 snmp.sh

我的问题是如何执行下面的操作

  1. 跟踪日志
  2. 如果关键字[down]匹配则使用snmp.sh脚本发送警报
  3. 否则离开

按照建议我尝试了这个

tail -F  /data/log/test.log |

egrep -io 'got signal 15 | now exiting' | 

while read -r line ;
do

    case "$line" in
       "got signal 15")
        echo "hi"
            ;;
        "now exiting")
        echo "hi2"
             ;;
        *)


    esac
done

但问题是 tail 在这里无法使用 case 语句,每当新的日志详细信息添加到 case 语句并回显输出时

如果我使用cat/less/more

我可以获得输出

有人能告诉我我在这里犯了什么错误吗?

提前致谢

听起来你想要的模式是这样的:

tail -f /var/log/errorlog.txt | grep -e down -e unmounted | while read -r line
do
    case "$line" in
        down)
            ./snmp.sh …
            ;;
        unmounted)
            ./snmp.sh …
            ;;
        *)
            echo "Unhandled keyword ${line}" >&2
            exit 1
    esac
done

尝试

tail -f /var/log/errorlog.txt | grep "down" | while read line; do snmp.sh; done