我必须根据nagios日志文件创建报告。我打算为此编写一个shell脚本。 日志文件如下:
[1420520400]当前服务状态:abc.com;服务;关键;硬; 3;确定:确定:上次于10-01-2015,用户= 2,员工= 0
[1420520400]当前服务状态:def.com;服务;关键;硬; 3;警告:最后于10-01-2015,用户= 2,员工= 0
[1420520400]当前服务状态:ghi.com; service; CRITICAL; HARD; 3; CRITICAL:Last on 2014-11-19,Users = 2,Employees = 0
从这个文件中,我想生成如下报告:
姓名:abc.om
日期:2015年1月10日
用户:2
员工:0
姓名:def.om
日期:2015年1月10日
用户:2
员工:0
姓名:ghi.om
日期:2014-11-19
用户:2
员工:0
如果有人帮助我实现这一目标会很棒。
答案 0 :(得分: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'
<强>输出强>:
在这里,我使用了&#39; =
&#39;但是,如果按照以下命令使用
$ 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 '=' ':'