pesquisando a string com o tempo no arquivo de log usando o shell script passando variáveis

0

Eu quero pesquisar uma string e subtrair a hora que é encontrada a partir da hora atual. Quando usado, o script deve mostrar as linhas a partir desse momento ou a partir do próximo período de tempo do log.

Eu sou capaz de pesquisar a string e subtrair a hora da hora atual, mas ela está pesquisando a hora exata e dando um resultado.

Eu quero que o script procure a hora exata. Se a hora exata não for encontrada, ela deverá mostrar o resultado de qualquer horário registrado mais próximo da hora atual e deverá mostrar as linhas de registro.

Resultado esperado:

Se a string e a hora não forem encontradas no arquivo de log, o script deverá ser inteligente para escolher a hora do registro mais próxima e mostrar o resultado dessa hora para a hora atual quantos registros existem com essa sequência.

    
por user267747 04.04.2016 / 15:17

1 resposta

0

O script a seguir pressupõe que você deseja localizar o texto no parâmetro 2, seguido por : , seguido pela data no parâmetro 3 formatado como YYYY-M-D-h:m:s , isto é, sem zeros à esquerda, conforme o trecho em sua pergunta. / p>

#!/bin/bash

logfile="$1"
message="$2"
timestamp=$(printf '%d-%d-%d-%d:%d:%d' 'date -d "$3" +"%Y %m %d %H %M %S"')

if grep -q "^../../.. ..:..:.. $message : $timestamp\$" "$logfile"; then
  echo "OK: $message $timestamp found on $logfile"
else
  echo "CRITICAL - $message $timestamp not found on $logfile"
  exit 1
fi
    
por 06.04.2016 / 10:23