我在 CentOS7 教程中找到了一个命令来获取尝试通过 ssh 连接的用户数量的小表:
| try
| ip
| user
|
这
代码如下:
zgrep -hi "Failed password for " /var/log/secure* | sed "s/invalid user //" | tr -s " " | awk '{print $11" "$9}' | sort | uniq -c | sort -rn | head -20
zgrep -hi "Failed password for " /var/log/secure* |
sed "s/invalid user //" |
tr -s " " |
awk '{print $11" "$9}' |
sort |
uniq -c |
sort -rn |
head -20
我想知道它是如何工作的?
答案1
第一个命令在 /var/log/secure 日志中搜索失败的登录尝试
zgrep -hi "Failed password for " /var/log/secure*
将产生如下结果:
Aug 1 21:22:53 jbclamp001 sshd[40401]: Failed password for jbutryn from ip.ip.ip.ip port 55843 ssh2
命令:
sed "s/invalid user //"
将搜索短语“无效用户”并将其替换为“”
命令:
tr -s " "
将从字符串中删除任何多余的空白字符。
命令:
awk '{print $11" "$9}'
然后将仅抓取第 11 和 9 列并打印它们(这是 IP 地址和用户名)
命令:
sort
然后会按字母数字对所有结果进行排序吗?
命令:
uniq -c
将删除任何重复的值
命令:
sort -rn
按相反的数字顺序对列表进行排序?
命令:
head -20
将仅显示结果中的前 20 个值。