gpt4 book ai didi

apache - 使用 Logformat 将掩码应用于 IP

转载 作者:行者123 更新时间:2023-12-05 01:06:48 25 4
gpt4 key购买 nike

我需要在 Apache 的日志中对 IP 应用掩码。

例如,我有这个日志:
192.168.234.111 - - [18/Oct/2013:16:29:40 +0200] “获取........”

我想保存它:
192.168.234.xxx - - [18/Oct/2013:16:29:40 +0200] “获取........”

为了做第一个日志,我使用这样的日志格式。

LogFormat "%h %l %u %t" combined-syslog2
CustomLog /var/log/toto combined-syslog2

要获得第二个日志,我可以像这样通过管道传输 perl/shell 脚本:
CustomLog |/usr/local/shl/apache_syslog2

但我对这个解决方案不满意。可以用 Apache 做到这一点吗?

谢谢。

埃里克

最佳答案

它可以更简化:

  • 只需使用 SetEnvIf来自模块 mod_setenvif根据 Remote_Addr 创建环境变量.
  • 使用正则表达式来确定要屏蔽的部分。
  • 最后在 LogFormat 语句中引用变量(例如 MASKED_IP_ADDR ),如下所示:
    SetEnvIf Remote_Addr "((?:\d{1,3}\.){3})\d{1,3}" MASKED_IP_ADDR=$1XXX
    LogFormat "%{MASKED_IP_ADDR}e %l %u %t" combined-syslog2

  • 当然,您也可以选择正确的 IP 地址正则表达式:
    ^((?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3})(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$

    这个捕获前三个八位字节,以便最后一个可以替换为 'XXX' .

    关于apache - 使用 Logformat 将掩码应用于 IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19452624/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com