Apache grep大日志文件

时间:2011-11-17 14:00:39

标签: apache command-line grep logging

我需要解析Apache日志文件以查找特定的可疑模式(如SQL注入)。

例如,我正在寻找id='%20or%201=1;

我正在使用grep检查此模式(和其他)的日志文件,因为这些日志很大,需要很长时间

这是我的命令:

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

我需要使用更好或更快的方法或命令来加快搜索速度吗?

3 个答案:

答案 0 :(得分:22)

对于初学者,您无需将grep输出管道传输到egrepegrep提供了grep正则表达式解析的超集,因此您可以这样做:

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

致电egrep与致电grep -E相同。

这可能会让你的性能提升一点。如果您可以查找固定字符串而不是正则表达式,那么这也可能有所帮助。您可以告诉grep使用-F选项查找固定字符串:

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

但是使用固定字符串会失去很多灵活性。

答案 1 :(得分:0)

我假设您从磁盘获取数据时花费了大部分时间(CPU使用率未达到最大值)。然后,您无法优化查询。您可以尝试仅在单独的文件中记录有趣的行....

答案 2 :(得分:0)

您在寻找grep -E "id=(' or|'%20)" apache.log吗?