Я хочу найти строку и вычесть время, найденное из текущего времени. При использовании сценарий должен показывать строки с того времени или со следующего интервала журнала.

Я могу искать строку и вычитать время из текущего времени, но оно ищет точное время и дает результат.

Я хочу, чтобы сценарий искал точное время. Если точное время не найдено, оно должно показывать результат от любого ближайшего зарегистрированного времени до текущего времени, и оно должно показывать строки журнала.

Ожидаемый результат:

Если строка и время не найдены в файле журнала, сценарий должен быть разумным, чтобы выбрать из ближайшего времени журнала и показать результат с того времени до текущего времени, сколько журналов имеется с этой строкой.

1 ответ1

0

В следующем сценарии предполагается, что вы хотите найти текст в параметре 2, за которым следует : а затем дата в параметре 3 в формате YYYY-M-D-h:m:s , то есть без начальных нулей, согласно фрагменту в вашем вопросе.

#!/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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .