【问题标题】:Apache grep big log fileApache grep 大日志文件
【发布时间】:2011-12-31 09:15:01
【问题描述】:

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

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

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

这是我的命令:

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

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

【问题讨论】:

    标签: apache command-line grep logging


    【解决方案1】:

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

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

    调用egrep 与调用grep -E 相同。

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2014-04-29
          • 2019-07-22
          • 2014-02-11
          • 2015-12-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-08-11
          相关资源
          最近更新 更多