пошук рядка з часом у файлі журналу за допомогою скрипта оболонки шляхом передачі змінних


0

Я хочу шукати рядок і відняти час, який знайдено, від поточного часу. При використанні сценарій повинен відображати рядки з того часу або з наступного часового періоду журналу.

Я можу шукати рядок і віднімати час від поточного часу, але він шукає точний час і дає результат.

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

Очікуваний вихід:

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


Я прибрав вашу посаду, але граматику потрібно очистити, щоб краще відповідати намірам вашого питання.
корінь

Дійсно дякую «корінь», і до того, щоб знати, я не отримав жодної відповіді. Як правило, скільки днів піде на відповідь на моє запитання.
user267747

Чи можете ви включити очікуваний вихід під час запуску сценарію (із тими параметрами) для цього файлу журналу? Ваше пояснення того, чого ви хочете, не дуже зрозуміле. Також для чого другий параметр? ("Сценарій початок о")
Ziggy Crueltyfree Zeitgeister

@ Ziggy Crueltyfree Zeitgeiste Я відредагував це питання і додав очікуваного виходу.
user267747

@root, оскільки я новачок на цьому веб-сайті, ласкаво допоможіть у цьому, я щойно відредагував своє запитання, знову це питання виглядає нерівномірно і дуже незграбно. Як я можу це правильно відредагувати
user267747

Відповіді:


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

Дякуємо за ваші зусилля! але моє погано, це не відповідало моїй вимозі.
user267747

Я не реалізував це " Якщо і файл, і рядок, і час не знаходять у файлі журналу, скрипт повинен бути розумним, щоб вибрати з найближчого часу журналу і показати результат від того часу до поточного часу, скільки журналів є в цьому рядку ", оскільки це занадто заплутаний. "Найближчі": назад або вперед? Покажіть, який результат? Скільки журналів існує з цим рядком? Що? Ось чому я просив вас (кілька разів) включити очікуваний результат як макет виконання: включити виконання команди та дотримуватися очікуваного результату, і, можливо, включити два чи три з них з різними результатами.
Ziggy Crueltyfree Zeitgeister
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.