AIX errpt 日志中今天和昨天的硬件错误输出

AIX errpt 日志中今天和昨天的硬件错误输出

我正在使用 shell 脚本从 AIX 中的 errpt 查找今天和昨天的硬件错误输出。我正在获取输出,但只需要 grep 日期。

例如

tdy=`date +'%m/%d'`
etdy=`date +'%m%d%%y'`
ydy=`TZ=GMT+24 date +%m%d`
awk '{if ($2 ~ "'^$etdy'" && $4 == "H") print $0}' /tmp/errptoutput.txt > /tmp/errptoutput1.txt
awk '{if ($2 ~ "'^$ydy'" && $4 == "H") print $0}' /tmp/errptoutput.txt >> /tmp/errptoutput1.txt

====cat /tmp/errptoutput.txt
DC32143C   0709073116 P H ent8           PING TO REMOTE HOST FAILED
6169289D   0731073116 P H ent8           PING TO REMOTE HOST FAILED
DC32143C   0801073116 P H ent8           PING TO REMOTE HOST FAILED
========================================================================

所以我只需要grep与年份约会(没有小时或分钟)。

假设硬件日期0801073116在 errpt 中。

使用上述脚本所需的输出基于%d%m%y080116(仅日期)而不是小时和分钟。

上面的脚本我需要修改什么?

答案1

我确信在日期计算中使用 GMT+24 存在边缘情况(AIX 上的日期数学很难),但这里是对脚本的最小修改,它生成 awk 的字符串,用于模式匹配今天的日期和昨天的日期嗯嗯嗯嗯AIX errpt 使用的格式:

tdy=`date +'%m%d'`
tdyy=`date +%y`
ydy=`TZ=GMT+24 date +%m%d`
ydyy=`TZ=GMT+24 date +%y`
today="${tdy}....${tdyy}"
yesterday="${ydy}....${ydyy}"

awk -v today="$today" -v yesterday="$yesterday" \
  '$2 ~ today || $2 ~ yesterday' /tmp/errptoutput.txt > /tmp/errptoutput1.txt

我注意到的一个拼写错误是:

etdy=`date +'%m%d%%y'`

你有一个额外的%.我还更改了tdy和日期字符串的格式,etdy以便它们仅输出月份和日期。我的其他添加内容是收集今天的年份和昨天的年份,然后使用之前的月/日值、正则表达式的句点来匹配这些位置中的任何字符,然后是年份来分配变量todayyesterday

我看到您正在解析现有的输出文件,但您可能也对-s-e标志感兴趣errpt,它们告诉 errpt 仅输出给定日期范围内的条目,例如:

errpt -s 0731000016 -e 0801000016

将显示从 2016 年 7 月 31 日开始到 2016 年 8 月 1 日结束的所有 errpt 条目。要另外将输出限制为硬件错误,请使用以下标志d

errpt -s 0731000016 -e 0801000016 -d H

https://www.ibm.com/support/knowledgecenter/ssw_aix_71/com.ibm.aix.cmds2/errpt.htm或您本地的手册页了解更多详细信息。

相关内容