我需要解析Apache日志文件以查找特定的可疑模式(如SQL注入)。
例如,我正在寻找id='%20or%201=1;
我正在使用grep检查此模式(和其他)的日志文件,因为这些日志很大,需要很长时间
这是我的命令:
grep 'id=' Apache.log | egrep "' or|'%20"
我需要使用更好或更快的方法或命令来加快搜索速度吗?
答案 0 :(得分:22)
对于初学者,您无需将grep
输出管道传输到egrep
。 egrep
提供了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
吗?