@fjord_sy

Как найти строки в логах с помощью powershell?

Здравствуйте. Ищу помощи. Имеется большое количество логов *.html. Необходимо осуществить поиск тех логов, в которых 2 события произошли строго друг за другом:
"дата время",38, ip адрес,"Подключение серверу. Установлено.","пользователь (comp )"
"дата время",156,ip адрес,,"Доступ отключен.",
Пример
............................
"2022-04-03 09:00:00",38,10.200.125.20,"Подключение серверу. Установлено.","пользователь 1 (comp 1)"
"2022-04-03 09:29:44",156,10.200.125.20,"Доступ отключен.",
.........................
параметры : дата время, ip адрес, пользователь комп - меняются, собственно поиск осуществляется по коду события, наименованию события.
  • Вопрос задан
  • 110 просмотров
Решения вопроса 1
@yellowmew
Cloud infrastructure, monitoring engineer. SRE
$x=gc *.html
for ($i=0; $i -le $x.Length; $i++) {
    if ((ConvertFrom-Csv -Delimiter "," -Header "a","b","c","d","e","f" -inputobject $x[$i]).b -eq "38" -and (ConvertFrom-Csv -Delimiter "," -Header "a","b","c","d","e","f" -inputobject $x[$i+1]).b -eq "156" ) {
        echo $x[$i] $x[$i+1]
    }
}

самое тупое что в голову пришло. оно будет тормозить ибо создаст объект со ВСЕМИ строками из всех файлов и пройдется по ним последовательно
а да, возможно надо будет делать парсинг html вытаскивая оттуда только текстовый контент
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@NortheR73
системный инженер
например,
Select-String -Path *.html -Pattern "Подключение серверу" -Context 1
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы