大容量ログファイルの複数行でパターンを検索する

大容量ログファイルの複数行でパターンを検索する

ログを調査するために、ワークフローで最初に悪用された脆弱性を見つけようとしました。

パターンは複数行にあります。

パターンは次のとおりです。

AAAAAAAAA
BBBBBBBBB
CCCCCCCCC

問題は

AAAAAAAAA

または

BBBBBBBBB

または

CCCCCCCCC

脆弱性を表示せずにログのどこにでも個別に見つけることができます。これらの正確な順序のパターンが役立ちます。

例えば

grep -Ei "AAAAAAAAA|BBBBBBBBB|CCCCCCCCC" logfile個別に表示されるすべての行がAAAAAAAAA BBBBBBBBB CCCCCCCCCそこにあるので、私には役立ちません。

この問題をどのように解決できますか?

ベストアンサー1

Pythonでは、次のことができます。 (ログファイルがAAAAAAAAA、BBBBBBBBB、またはCCCCCCCCCCのいずれかの行に散在していても、目的の一致を取得できることを示すために、例に少し追加しました。)

以下はfind_log_vulns.pyの内容です。

#! /usr/bin/python3

import re

test_string = """1234324
AAAAAAAAA
BBBBBBBBB
CCCCCCCCC
absdfjv4er4
AAAAAAAAA
BBBBBBBBB
CCCCCCCCC
123466666
AAAAAAAAA
ghrhvhhhfh
BBBBBBBBB
fjwjefjsjfjwjf
CCCCCCCCC
24wfsgggg
AAAAAAAAA
BBBBBBBBB
CCCCCCCCC
zzzz"""

matches = re.findall('AAAAAAAAA\nBBBBBBBBB\nCCCCCCCCC\n', test_string, re.MULTILINE)

print(matches)

上記の実行結果は次のとおりです。

$ ./find_log_vulns.py
['AAAAAAAAA\nBBBBBBBBB\nCCCCCCCCC\n', 'AAAAAAAAA\nBBBBBBBBB\nCCCCCCCCC\n', 'AAAAAAAAA\nBBBBBBBBB\nCCCCCCCCC\n']

上記のように、各一致はリストの要素として返されます。

おすすめ記事