【问题标题】:filter only ip from the http error log using awk使用 awk 从 http 错误日志中仅过滤 ip
【发布时间】:2021-09-22 17:04:54
【问题描述】:

我在我的 bash 脚本中使用以下命令从日志中过滤失败的 ip:

tail -1000 /var/log/secure | awk '/sshd/ && /Failed password for/ { if (/invalid user/) try[$13]++; else try[$11]++; }

这适用于 var/log/secure 下的 ssh 日志,其中 ip 地址是唯一的

我正在为 http 错误日志尝试相同的方法 但在 http 错误日志中,ip 与 ip:port 结合在一起,例如 1.1.1.1:44848 在运行下面的命令时

tail -1000 /var/log/httpd/error_log | awk '/denied/ && /client/ { if (/invalid user/) try[$12]++; else try[$10]++; }

try[$10] 是 ip:port 的值,但它输出空值。

这是我用来阻止 ssh 失败尝试的脚本 [LINK]

我正在尝试实现类似的 http 错误日志

[Mon Sep 27 00:20:20.195139 2021] [access_compat:error] [pid 17100] [client 192.241.208.127:38700] AH01797:客户端被服务器配置拒绝:/var/www/html/hudson [Mon Sep 27 00:26:37.161248 2021] [access_compat:error] [pid 17097] [client 216.218.206.67:58598] AH01797:客户端被服务器配置拒绝:/var/www/html/

【问题讨论】:

  • 请看editing-help
  • 另外,如果你能添加完整的样本会很棒。
  • 您要求我们帮助您编写脚本来解析文件,但没有向我们展示您想要解析的文件的示例,也没有向我们展示您想要从中获得的输出文件。请edit您的问题包括minimal reproducible example
  • 我已通过帖子编辑...

标签: linux bash apache awk


【解决方案1】:

您可以使用gsub() 剥离端口:

echo 1.1.1.1:44848 | awk 'gsub(/:.*/, "", $0)'
1.1.1.1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-22
    • 2016-03-22
    • 1970-01-01
    • 2017-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多