【发布时间】:2021-04-02 22:13:34
【问题描述】:
我有很多来自fail2ban 日志的禁止IP。这有这种格式:
[...]
2021-02-28 00:03:33,818 fail2ban.filter [687]: INFO [sshd] Found 193.142.146.33 - 2021-02-28 00:03:33
2021-02-28 00:07:17,068 fail2ban.filter [687]: INFO [sshd] Found 193.142.146.33 - 2021-02-28 00:07:16
2021-02-28 00:08:49,568 fail2ban.filter [687]: INFO [sshd] Found 142.93.234.120 - 2021-02-28 00:08:49
[...]
我想将其转换为具有禁止次数的唯一 IP 列表(与前面的示例一样):
2 193.142.146.33
1 142.93.234.210
评论:uniq(zcat /var/log/fail2ban.log.4.gz | grep ssh | uniq -c - | less)不起作用,因为拍摄时间不同。所以在调用uniq之前我需要一些预处理。
【问题讨论】:
-
看来
zcat /var/log/fail2ban.log.4.gz | grep -Eo "[^^][0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" | uniq -c | sort解决了我的问题。有更好的解决方案吗? -
注意:
[^^]与行首不匹配,表示不是^字符的字符 - 查看示例似乎无关紧要。 -
另请注意,您的原始文件将过滤掉不是来自 sshd 的其他 IP 地址...修改后的内容将匹配包括 IP 地址在内的其他内容
标签: shell logging uniq fail2ban