需要每小时检查一次日志文件以查找“无法连接到 ldap”,我每小时在 cron 中输入此脚本:
#!/bin/bash
> result
cat logfile.log | grep -a 'unable to connect to the ldap' > result
if [ -s result ]
then
echo -e "Attention! Missing ldap connection at " "\n" `cut -c-24 result`
fi
exit 0
它确实完成了它的工作,只是格式很糟糕,就像这样:
Attention! Missing ldap connection at
2022-05-25 20:35:53,293 2022-05-25 20:35:53,294 2022-05-25 20:35:53,295 2022-05-25 20:35:53,295
有没有办法将其格式化为如上所述?
Attention! Missing ldap connection at
2022-05-25 20:35:53,293
2022-05-25 20:35:53,294
2022-05-25 20:35:53,295
2022-05-25 20:35:53,295
在 cut 语句内部和外部添加“\n”是没有用的。
谢谢,
锡尔
答案1
将此过滤器添加到您的输出中grep -Eo "[0-9]*-[0-9]*-[0-9]* [0-9]*:[0-9]*:[0-9]*,[0-9]*"
。那么它是如何工作的
grep -Eo
好的,所以这E
是 grep 的扩展正则表达式,并且o
仅显示匹配行的非空部分- “[0-9]*” 打印从 0 到 9 的所有数字,直到出现非 0 到 9 的数字
- 剩下的只是匹配字符
答案2
根据 Q 中的初始行:
echo -e "注意!\n $(cut -c-24 result) 处缺少 ldap 连接"
... 或许?
不是在任何现场情况下进行测试