Script para filtrar erro

13. Re: Script para filtrar erro

Rodrigo
rodrigofl20

(usa Linux Mint)

Enviado em 20/07/2016 - 17:00h

msoliver escreveu:

rodrigofl20 escreveu:

msoliver escreveu:

rodrigofl20 escreveu:
No seu teste retornou apenas a linha encontrada? Aqui veio as 100.


Sim Rodrigo, apenas a linha encontrada.
Desculpa ae Rodrigo!!!!
Testei no terminal de um modo e postei de outro....
Poucas alterações, no 1º egrep tem o "-o", que é justamente "SOMENTE O QUE CASOU"


if egrep -o 'ORA-' <<< $(tail -n100 /home/lopes/alert_orcl.log) > LINHA_ERRO.txt;then
if egrep -q -f LINHA_ERRO.txt /home/lopes/teste.txt;then
echo "SEM ERROS"
else
echo "CONTÉM ERROS"
cat LINHA_ERRO.txt
fi
fi


Att.:
Marcelo Oliver


Marcelo, testei aqui e o resultado dessa fez mudou mas continua fora do esperado. Dessa vez ele retornou apenas a palavra "ORA-" que ele encontrou, exemplo, ele encontrou 7 ORA-, retornou ele 7 vezes, mas não as linhas, veio só a string mesmo.
Dei uma olhada no help do egrep e vi isso "-o, --only-matching mostra apenas a parte da linha que coincide com o PADRÃO".
Não achei outra opção que talvez possa servir para o propósito, acho que o egrep não é a ferramenta certa... =/
Vlw pela ajuda até agora.
Vou testar outras tools.


Rodrigo,
O conteúdo de /home/lopes/teste.txt, e mais ou menos esse abaixo?
ORA-001
ORA-004
ORA-010
. . .
Poste um trecho do ARQUIVO /home/lopes/alert_orcl.log
OBS.: para o EGREP retornar o Nº da LINHA, no 1º EGREP, faça:
if egrep -on 'ORA' <<< $(tail -n100 /home/lopes/alert_orcl.log) > LINHA_ERRO.txt;then
A saída será, exemplo:
560:ORA
Ou vc trata com o SED, ou altera em EXCEPTION
SAÍDA TRATADA COM O SED:
if egrep -on 'ORA' <<< $(tail -n100 /home/lopes/alert_orcl.log)|sed -r 's/^([0-9]+):(ORA)/\2-\1/' > LINHA_ERRO.txt;then
SAíDA:
ORA-560
marcelo


Marcelo, consegui fazer em python, vou postar pra vc ter uma ideia do objetivo final que estava buscando. Talvez eu não consegui dizer de forma correta o objetivo. Mas agradeço pela ajuda.

Segue código:

# coding=utf8
# -*- coding: utf8 -*-
import os

## Variáveis de ambiente ##
DIRALERT=
SID=

os.system('tail -n100 $DIRALERT/alert_$SID.log |grep -i "ORA-" > /home/oracle/globalsys/scripts/temp_alert.txt') ##Cria arquivo temp com as últimas 100 linhas do Alert.log
alert = open('/home/oracle/temp_alert.txt','r') ##Abre o arquivo temp com os últimos ORA-
lendo = alert.read().splitlines() ##Lê o arquivo

exception = open('/home/oracle/globalsys/scripts/except_alert.txt','r') ##Arquivo de excessão, para adicionar novas excessões deve acrescentar a msg de erro por completa em uma nova linha
lendo2 = exception.read().splitlines() ##Lê o arquivo

vetor1 = set(lendo) ##Vetor lendo os últimos erros encontrados, ignorando os repetidos
vetor2 = lendo2 ##Vetor lendo as excessões

##Percorrendo os 2 vetores e identificando os erros que não estão no arquivo de excessão
for linha in vetor1:
for linha2 in vetor2:
if linha != linha2:
print linha

##Fechando os arquivos
alert.close()
exception.close()

##Removendo arquivo temporário com as últimas 100 linhas
os.system('rm /home/oracle/globalsys/scripts/temp_alert.txt')




  



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts