【Linux命令】AWK 之统计日志中失败登陆的IP和次数

awk 是三剑客中一把利刃。

统计/var/log/secure日志中出现“Failed”关键词的IP地址及次数。

···
awk 是三剑客中一把利刃。

cat /var/log/secure
Jul 18 10:28:59  sshd[1377656]: Accepted password for root from 172.16.100.66 port 59750 ssh2
Jul 18 10:28:59  sshd[1377656]: pam_unix(sshd:session): session opened for user root by (uid=0)
Jul 18 10:38:20  sshd[1416681]: Accepted password for root from 172.16.100.21 port 62366 ssh2
Jul 18 10:38:20  sshd[1416681]: pam_unix(sshd:session): session opened for user root by (uid=0)
Jul 18 10:58:57  sshd[1502199]: Accepted password for root from 172.16.100.66 port 61038 ssh2
# 可以看到正常的一个访问日志记录,新建一个连接 故意输错密码,让日志记录一下
Jul 18 10:59:13  sshd[1503821]: Failed password for root from 172.16.100.21 port 63802 ssh2
#可以看到错误登陆时的日志记录是这样的。
那么就可以开始使用awk来实现二级标题中的需要了。

先给出命令再来解析

awk '/Failed/ {++ip[$(NF-3)]} END {for (i in ip) print i"="ip[i]}'
  • 敲黑板!

具体解释如下:

  1. cat /var/log/secure 打印输出整个secure日志内容。
  2. awk '/Failed/ {++ip[$(NF-3)]} END {for (i in ip) print i"="ip[i]} 是awk的主要逻辑。
  3. /Failed/ 表示匹配包含"Failed"的行。
  4. $(NF-3) 取每个匹配行的倒数第3列,也就是客户端IP地址。
  5. ++ip[$(NF-3)] 将IP作为数组ip的键,对应的次数加1。
  6. END 块在文件结束时执行。
  7. for (i in ip) print i"="ip[i] 遍历数组ip,打印每个IP及出现次数。
cat /var/log/secure|awk '/Failed/ {++ip[$(NF-3)]} END {for (i in ip) print i"="ip[i]}'
172.16.100.21=1

整体效果就是统计日志中出现“Failed”的IP次数。
这样就可以在之后写一些脚本中使用到啦。
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值