Подтвердить что ты не робот

Большой файл журнала Apache grep

Мне нужно проанализировать файл журнала Apache для поиска определенных подозрительных шаблонов (например, инъекций SQL).

Например, я ищу id='%20or%201=1;

Я использую grep для проверки файла журнала для этого шаблона (и других), и поскольку эти журналы огромны, требуется большое количество времени

Здесь моя команда:

grep 'id=' Apache.log | egrep "' or|'%20"

Есть ли лучший или более быстрый метод или команда, которые мне нужны для ускорения поиска?

4b9b3361

Ответ 1

Для начала вам не нужно транслировать вывод grep на egrep. egrep предоставляет надмножество регулярного выражения grep, поэтому вы можете просто сделать это:

egrep "id='( or|%20)'" apache.log

Вызов egrep идентичен вызову grep -E.

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

grep -F "id='%20or" apache.log

Но используя фиксированные строки, вы теряете большую гибкость.

Ответ 2

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

Ответ 3

Вы ищете grep -E "id=(' or|'%20)" apache.log?