linux - 如果关键字触发,Shellscript 来监控日志文件,然后运行 snmptrap 命令
问题描述
有没有办法使用shell script
like
tail -f /var/log/errorlog.txt
then 来监控日志文件,如果down
出现类似关键字,则生成SNMPTRAP
并snmp manager
继续监控
我有一个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 语句并回显输出
如果我使用 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
推荐阅读
- angular - 为什么我的子组件的加载微调器从未显示?
- c - 在c中没有功能的拆分单词
- pandas - 如何为 Pandas DataFrame 中的每个唯一 ID 创建项目列表?
- string - 如何将每个句子的第一个单词的TextField值首字母大写?
- python - SQL Server 删除重复行和管理键
- python-3.x - 如何使用“随机”地址类型创建 bluezero 外围设备
- html - event.pageX 和 event.pageY 没有给我正确的位置
- node.js - 当 NPM 包过期时部署
- arrays - 我在数据库字段中有数组,想使用查询生成器 Laravel 搜索 5G 为 Yes 值的设备,并在视图 Laravel 中显示产品
- typescript - 禁止 typescript 接口拥有所有权