AIX errpt 로그에 오늘과 어제의 하드웨어 오류 출력

AIX errpt 로그에 오늘과 어제의 하드웨어 오류 출력

나는 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그래서 연도로만 데이트 하면 됩니다 (시간이나 분 없음).

하드웨어 날짜가 0801073116errpt에 있다고 가정합니다.

위 스크립트를 사용하여 원하는 출력은 %d%m%y시간과 분 대신 080116(날짜만)을 기반으로 합니다.

위 스크립트에서 무엇을 수정해야 합니까?

답변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'`

추가 가 있습니다 . 또한 월과 일만 출력하도록 및 날짜 문자열의 형식을 %변경했습니다 . 다른 추가 사항은 오늘의 연도와 어제의 연도를 수집한 다음 이전 월/일 값, 해당 위치의 모든 문자와 일치하는 정규식의 마침표, 연도를 사용하여 변수를 할당하는 것입니다 .tdyetdytodayyesterday

기존 출력 파일을 구문 분석하고 계시지만 errpt에게 주어진 날짜 범위 내의 항목만 출력하도록 지시하는 -s-eflags 에도 관심이 있으실 것입니다. 예를 들면 다음과 같습니다.errpt

errpt -s 0731000016 -e 0801000016

2016년 7월 31일부터 2016년 8월 1일까지 종료되는 모든 오류 항목이 표시됩니다. 출력을 하드웨어 오류로 추가로 제한하려면 다음 플래그를 사용하십시오 d.

errpt -s 0731000016 -e 0801000016 -d H

바라보다https://www.ibm.com/support/knowledgecenter/ssw_aix_71/com.ibm.aix.cmds2/errpt.htm자세한 내용은 해당 지역 매뉴얼 페이지를 참조하세요.

관련 정보