Saída de erro de hardware de ontem e ontem de um log errto do AIX

1

Estou procurando a saída de erro de hardware de hoje e de ontem do err.org no AIX usando um script de shell. Eu estou recebendo a saída, mas preciso apenas grep data.

por exemplo

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
========================================================================

Por isso, preciso de grep apenas a data com o ano (sem horas ou minutos).

Suponha que a data do hardware seja 0801073116 in errpt.

Saída exigida usando o script acima, com base em %d%m%y 080116 (somente a data), não em horas e minutos.

O que eu preciso modificar no script acima?

    
por Daya 01.08.2016 / 14:51

1 resposta

1

Tenho certeza de que há um caso extremo para o uso do GMT + 24 no cálculo da data ( data matemática no AIX é difícil ), mas aqui está uma adaptação mínima do seu script que gera strings para o awk usar para o padrão correspondente à data de hoje e à data de ontem no formato mmddhhmmyy que o AIX errpts usa:

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

Um erro de digitação que notei estava em:

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

em que você tinha um % extra. Também alterei o formato das sequências de caracteres tdy e etdy date, de modo que elas apenas exibissem o mês e o dia. Minhas outras adições foram reunir o ano de hoje e o de ontem e atribuir as variáveis today e yesterday usando os valores de mês / dia anterior, os períodos da expressão regular para corresponder a qualquer caractere nessas posições e, em seguida, os anos. / p>

Vejo que você está analisando um arquivo de saída existente, mas você também pode estar interessado nos -s e -e sinalizadores para errpt , que informam errt para gerar apenas entradas no intervalo de datas especificado, por exemplo:

errpt -s 0731000016 -e 0801000016

Mostraria todas as entradas erradas começando em 31 de julho de 2016 e terminando em 1º de agosto de 2016. Para limitar ainda mais a saída a erros de hardware, use o sinalizador d :

errpt -s 0731000016 -e 0801000016 -d H

Consulte o link ou sua página de manual local para saber mais detalhes.

    
por 01.08.2016 / 17:05

Tags