Lendo arquivo de log e tomando ação

1. Lendo arquivo de log e tomando ação

Juan Damo
hunterjn

(usa FreeBSD)

Enviado em 19/06/2017 - 20:03h

Boa noite,
Tenho a seguinte situação:
Em um diretório existe um arquivo de log "alertas". Nesse arquivo, um serviço grava informações. Eu gostaria de criar um script que ficasse lendo esse arquivo, e toda vez que a palavra "exemplo", ele chamasse um script .py que eu criei. Pensei também em esse script conter um while e um sleep de 15segundos para ficar sempre rodando. Realmente preciso disso, alguém poderia ajudar por favor?



  


2. Re: Lendo arquivo de log e tomando ação

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 19/06/2017 - 22:26h

hunterjn escreveu:

Boa noite,
Tenho a seguinte situação:
Em um diretório existe um arquivo de log "alertas". Nesse arquivo, um serviço grava informações. Eu gostaria de criar um script que ficasse lendo esse arquivo, e toda vez que a palavra "exemplo", ele chamasse um script .py que eu criei. Pensei também em esse script conter um while e um sleep de 15segundos para ficar sempre rodando.
Realmente preciso disso, alguém poderia ajudar por favor?


Boa noite Hunter.
Faça um "laço", looping infinito com o while,
Procure pela "palavra" exemplo, se encontrar, chame o script .py
Exemplo:

while :;do
if grep -q 'exemplo' ARQUIVO.log;then
CHAMA o SCRIPT '.py'
fi
done

É isso . . .
Se a resposta foi esclarecedora marque o tópico como resolvido . . .
Se a minha resposta foi satisfatória, marque a como A MELHOR . . . :)

att.:
marcelo oliver





3. Re: Lendo arquivo de log e tomando ação

Juan Damo
hunterjn

(usa FreeBSD)

Enviado em 20/06/2017 - 00:06h

msoliver escreveu:

hunterjn escreveu:

Boa noite,
Tenho a seguinte situação:
Em um diretório existe um arquivo de log "alertas". Nesse arquivo, um serviço grava informações. Eu gostaria de criar um script que ficasse lendo esse arquivo, e toda vez que a palavra "exemplo", ele chamasse um script .py que eu criei. Pensei também em esse script conter um while e um sleep de 15segundos para ficar sempre rodando.
Realmente preciso disso, alguém poderia ajudar por favor?


Boa noite Hunter.
Faça um "laço", looping infinito com o while,
Procure pela "palavra" exemplo, se encontrar, chame o script .py
Exemplo:

while :;do
if grep -q 'exemplo' ARQUIVO.log;then
CHAMA o SCRIPT '.py'
fi
done

É isso . . .
Se a resposta foi esclarecedora marque o tópico como resolvido . . .
Se a minha resposta foi satisfatória, marque a como A MELHOR . . . :)

att.:
marcelo oliver




Boa noite Marcelo, obrigado pelo retorno.
Sobre o a dica que me deste,quero tirar uma dúvida..
Exemplo: Digamos que eu tenha um log de firewall, as 23:00 aparece a string "palavra", por sua vez o script le a string e ativa o .py. As 23:30 a string aparece no log novamente, o script acima vai ativar novamente o e-mail com a string mais atual, das 23:30, ou vai ativar por causa de logs mais antigos?
A ideia é o script Shell ficar lendo o log, e toda vez que surgir uma string configurada, ele ative o .py.


Não sei se fui claro, abraços e obrigado novamente.


4. Re: Lendo arquivo de log e tomando ação

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 20/06/2017 - 17:41h

hunterjn escreveu:

msoliver escreveu:

hunterjn escreveu:

Boa noite,
Tenho a seguinte situação:
Em um diretório existe um arquivo de log "alertas". Nesse arquivo, um serviço grava informações. Eu gostaria de criar um script que ficasse lendo esse arquivo, e toda vez que a palavra "exemplo", ele chamasse um script .py que eu criei. Pensei também em esse script conter um while e um sleep de 15segundos para ficar sempre rodando.
Realmente preciso disso, alguém poderia ajudar por favor?


Boa noite Hunter.
Faça um "laço", looping infinito com o while,
Procure pela "palavra" exemplo, se encontrar, chame o script .py
Exemplo:

while :;do
if grep -q 'exemplo' ARQUIVO.log;then
CHAMA o SCRIPT '.py'
fi
done

É isso . . .
Se a resposta foi esclarecedora marque o tópico como resolvido . . .
Se a minha resposta foi satisfatória, marque a como A MELHOR . . . :)

att.:
marcelo oliver




Boa noite Marcelo, obrigado pelo retorno.
Sobre o a dica que me deste,quero tirar uma dúvida..
Exemplo: Digamos que eu tenha um log de firewall, as 23:00 aparece a string "palavra", por sua vez o script le a string e ativa o .py. As 23:30 a string aparece no log novamente, o script acima vai ativar novamente o e-mail com a string mais atual, das 23:30, ou vai ativar por causa de logs mais antigos?
A ideia é o script Shell ficar lendo o log, e toda vez que surgir uma string configurada, ele ative o .py.
Não sei se fui claro, abraços e obrigado novamente.


Boa tarde Hunter.
Foi bastante claro . . .
Do modo que estava, chamaria o script.py não considerando se a quantidade de "string palavra" foi alterada . . .
Fiz uma correção, agora, so chama o "py", se a quantidade de "palavras" aumentar em relação ao nº anterior. . . .
Segue:
#!/bin/bash

NSAnt=0
LOG="Arquivo.txt"
STRING="palavra" #DEFINA A STRING
tput clear

while :;do
NSAtl=$(grep -c "$STRING" $LOG) #Nº de STRINGS Atual
((NSAtl > NSAnt)) && echo "$(date +%s.%3N): CHAMA SCRIPT .py" #COLOQUEI A MENSAGEM PARA TESTAR . . . .
NSAnt="$NSAtl" #Nº de STRINGS Anterior
sleep 30 #JUSTE DE ACORDO COM A NECESSIDADE
done

Att.:
Marcelo Oliver



5. Re: Lendo arquivo de log e tomando ação

Juan Damo
hunterjn

(usa FreeBSD)

Enviado em 20/06/2017 - 19:35h

msoliver escreveu:

hunterjn escreveu:

msoliver escreveu:

hunterjn escreveu:

Boa noite,
Tenho a seguinte situação:
Em um diretório existe um arquivo de log "alertas". Nesse arquivo, um serviço grava informações. Eu gostaria de criar um script que ficasse lendo esse arquivo, e toda vez que a palavra "exemplo", ele chamasse um script .py que eu criei. Pensei também em esse script conter um while e um sleep de 15segundos para ficar sempre rodando.
Realmente preciso disso, alguém poderia ajudar por favor?


Boa noite Hunter.
Faça um "laço", looping infinito com o while,
Procure pela "palavra" exemplo, se encontrar, chame o script .py
Exemplo:

while :;do
if grep -q 'exemplo' ARQUIVO.log;then
CHAMA o SCRIPT '.py'
fi
done

É isso . . .
Se a resposta foi esclarecedora marque o tópico como resolvido . . .
Se a minha resposta foi satisfatória, marque a como A MELHOR . . . :)

att.:
marcelo oliver




Boa noite Marcelo, obrigado pelo retorno.
Sobre o a dica que me deste,quero tirar uma dúvida..
Exemplo: Digamos que eu tenha um log de firewall, as 23:00 aparece a string "palavra", por sua vez o script le a string e ativa o .py. As 23:30 a string aparece no log novamente, o script acima vai ativar novamente o e-mail com a string mais atual, das 23:30, ou vai ativar por causa de logs mais antigos?
A ideia é o script Shell ficar lendo o log, e toda vez que surgir uma string configurada, ele ative o .py.
Não sei se fui claro, abraços e obrigado novamente.


Boa tarde Hunter.
Foi bastante claro . . .
Do modo que estava, chamaria o script.py não considerando se a quantidade de "string palavra" foi alterada . . .
Fiz uma correção, agora, so chama o "py", se a quantidade de "palavras" aumentar em relação ao nº anterior. . . .
Segue:
#!/bin/bash

NSAnt=0
LOG="Arquivo.txt"
STRING="palavra" #DEFINA A STRING
tput clear

while :;do
NSAtl=$(grep -c "$STRING" $LOG) #Nº de STRINGS Atual
((NSAtl > NSAnt)) && echo "$(date +%s.%3N): CHAMA SCRIPT .py" #COLOQUEI A MENSAGEM PARA TESTAR . . . .
NSAnt="$NSAtl" #Nº de STRINGS Anterior
sleep 30 #JUSTE DE ACORDO COM A NECESSIDADE
done

Att.:
Marcelo Oliver



Certo Marcelo, obrigado pela atenção.
Irei testar e lhe retorno. Desde já, muito obrigado pela ajuda.
Abraços.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts