Linux Shellscript在关键字触发时监视日志文件,然后运行snmptrap命令
有没有一种方法可以像使用Linux Shellscript在关键字触发时监视日志文件,然后运行snmptrap命令,linux,bash,shell,rhel,snmp-trap,Linux,Bash,Shell,Rhel,Snmp Trap,有没有一种方法可以像使用shell脚本那样监视日志文件 tail-f/var/log/errorlog.txt然后如果出现类似down的关键字,则生成SNMPTRAP到snmp管理器,并继续监视 我有一个SNMP脚本可用于生成SNMPTrap,它看起来像 snmptrap -v v2c -c community host "Error message" 让脚本名为snmp.sh 我的问题是如何执行以下操作 跟踪日志 如果关键字[down]匹配,则使用snmp.sh脚本发送警报 否则离开 根据建
shell脚本那样监视日志文件
tail-f/var/log/errorlog.txt
然后如果出现类似down
的关键字,则生成SNMPTRAP
到snmp管理器
,并继续监视
我有一个SNMP
脚本可用于生成SNMPTrap
,它看起来像
snmptrap -v v2c -c community host "Error message"
让脚本名为snmp.sh
我的问题是如何执行以下操作
跟踪日志
如果关键字[down]匹配,则使用snmp.sh脚本发送警报
否则离开
根据建议,我试过这个
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语句并回显输出时,tail就不适用于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
试一试
这个脚本会像识别关键字一样持续监视吗?它应该生成陷阱并从它离开的地方再次开始监视?另外,我的另一个问题是,我想再添加几个关键字,如error、unmounted、failure。。脚本应该一次查找所有关键字,并在发现任何关键字时启动snmptrap,因为没有陷阱。它只是对每一行执行命令。如果您想处理多个关键字,只需使用grep-e error-e unmounted…
。是的,我知道了,但当我使用tail运行时,脚本会连续运行。我的问题是,假设第一个脚本监控了18行,找到了“down”关键字,并给出了警报,一旦生成警报,它应该返回到第19行并再次开始监控,如何配置?另一个澄清是,我们可以使用CASE函数来监控所有关键字并生成警报吗?这个解决方案正是这样做的。它永远运行,分别同步地处理每一场比赛。我没有发现这一点
tail -f /var/log/errorlog.txt | grep "down" | while read line; do snmp.sh; done