1

有没有办法使用shell scriptlike tail -f /var/log/errorlog.txtthen 来监控日志文件,如果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,我可以获得输出

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

提前致谢

4

2 回答 2

1

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

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
于 2018-11-02T20:48:33.457 回答
0

尝试

tail -f /var/log/errorlog.txt | grep "down" | while read line; do snmp.sh; done
于 2018-11-02T20:50:28.503 回答