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

私が見つけたスペルエラーの1つは次のとおりです。

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

追加があります。また、月と日のみを出力するように日付文字列の形式を%変更しました。他の追加点は、今日の年と昨日の年を収集し、前の月/日の値、その場所のすべての文字に一致する正規表現のピリオド、年を使用して変数を割り当てることです。tdyetdytodayyesterday

既存の出力ファイルを解析していますが、指定された日付範囲内の項目のみを出力するようにerrptに指示し、-sflags-eにも興味があります。たとえば、次のようになります。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詳しくは、お住まいの地域のマニュアルページをご覧ください。

おすすめ記事