我必须根据 nagios 日志文件创建报告。我打算为此编写一个 shell 脚本。 日志文件如下:
[1420520400] 当前服务状态:abc.com;service;CRITICAL;HARD;3;OK : OK : 最后 10-01-2015,用户 = 2,员工 = 0
[1420520400] 当前服务状态:def.com;service;CRITICAL;HARD;3;WARNING:最后一次于 10-01-2015,用户 = 2,员工 = 0
[1420520400] 当前服务状态:ghi.com;service;CRITICAL;HARD;3;CRITICAL:最后一次于 2014 年 11 月 19 日,用户 = 2,员工 = 0
我想从这个文件生成如下报告:
名称:abc.com
日期:10-01-2015
用户:2
员工:0
名称:def.om
日期:10-01-2015
用户:2
员工:0
名称:ghi.om
日期:2014-11-19
用户:2
员工:0
如果有人能帮助我实现这一目标,那就太好了。
最佳答案
此命令将为您提供上述输出,只需将日志文件中的文件名从 input.log
更改为实际文件名即可。
$ cat input.log |cut -d';' -f1,6|sed -e 's/\<CURRENT SERVICE STATE\>/NAME=/g'|sed -e 's/\<OK\>//g'|sed -e 's/\<Last on\>/Date =/g'|tr -d ':'|sed 's/WARNING//g'|sed 's/CRITICAL//g'|cut -c 14-|tr -s ' '|tr ',;' '\n'
输出:
在这里,我使用了'=
',但如果您使用,您可以按照命令更改与上面完全相同的输出,
$ cut -d';' -f1,6 input.log|sed -e 's/\<CURRENT SERVICE STATE\>/NAME=/g'|sed -e 's/\<OK\>//g'|sed -e 's/\<Last on\>/Date =/g'|tr -d ':'|sed 's/WARNING//g'|sed 's/CRITICAL//g'|cut -c 14-|tr -s ' '|tr ',;' '\n' |tr '=' ':'
关于linux - 使用 shell 脚本根据日志文件生成报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27957468/