Script de bash para monitorar log, combinar palavra-chave e enviar comandos [duplicado]

0
#!/bin/bash
sudo tail -fn0 /home/main/time.log |
grep -o --line-buffered 'garage\|garden\|porch' | head -1 |
    while read line; do 
sudo pkill -f porch.sh &
sudo pkill -f garage.sh &
done

Estou tentando escrever um script que monitora um log e, ao corresponder uma palavra-chave, ele disparará alguns comandos.

O problema é que o que eu juntei funcionará apenas uma vez, depois saia e pare de monitorar.

Eu tenho "head -1" adicionado ao grep, porque eu quero que isso seja executado somente após a primeira palavra-chave e evite que ele seja executado várias vezes se várias palavras-chave aparecerem na parte final do log. Então, basicamente, se várias palavras-chave aparecerem na cauda, quero que ele seja executado na primeira palavra-chave, ignore o restante das palavras-chave, execute os scripts listados e volte ao monitoramento da cauda do log.

Eu preferiria que o script permanecesse ativo depois de corresponder a uma palavra-chave e continuar monitorando a parte final do log em busca de novas palavras-chave que pudessem ser registradas.

Qualquer conselho é muito apreciado. Obrigada!

    
por fizers 28.08.2018 / 10:34

1 resposta

0

Eu recomendaria que você usasse o loop infinito se você quer que ele continue monitorando e apenas adicione e durma dentro do seu shell para dizer a ele quanto tempo precisa passar para monitorar novamente, se você estiver usando o bash shell isso seria algo assim:

#!/bin/bash
while true
do
   sudo tail -fn0 /home/main/time.log |
   grep -o --line-buffered 'garage\|garden\|porch' | head -1 |
   while read line; do 
      sudo pkill -f porch.sh &
      sudo pkill -f garage.sh &
   done
   sleep 1 #change it for the time you want it to keep it monitoring again
done
    
por 28.08.2018 / 17:27