分析 一个月 SSH 成功登录情况 全部四个的版本

image
由于基本日志和三月的日志不在一个地方 ,所以要一并过滤
image
用:grep Accepted /tmp/secure-202303* /tmp/secure
要在CentOS 7中一并过滤出多个SSH日志文件里的“Accepted”成功登录记录,可以使用 grep 命令结合通配符来匹配多个目标日志文件。

命令示例(根据你的日志文件场景):

grep Accepted /tmp/secure-202303* /tmp/secure

命令解释:

  • grep Accepted:筛选包含字符串 Accepted 的行(SSH 成功登录通常会包含该关键词)。
  • /tmp/secure-202303*:用通配符 * 匹配secure-202303 开头的所有日志文件(比如 /tmp/secure-20230326 这类带日期后缀的文件)。
  • /tmp/secure:同时指定无日期后缀的主日志文件,确保不遗漏该文件里的记录。

这样就能一次性从多个相关日志文件中,过滤出所有 SSH 成功登录的记录了。

你会发现 grep Accepted /tmp/secure-202303* /tmp/secure 的前面有过滤的信息
image
所以我发现可以用cut 命令过滤:
image
grep Accepted /tmp/secure-202303* /tmp/secure | cut -d: -f2-

过滤出来就是正常的
可以直接用了
若想用 cut 命令解决“不显示文件名”的问题,核心是利用 cut字段分割功能,剔除 grep 输出中“文件名:”的前缀部分。

命令实现:

grep "Accepted" /tmp/secure-202303* /tmp/secure | cut -d: -f2-

命令解释:

  1. grep "Accepted" /tmp/secure-202303* /tmp/secure
    从目标日志文件中筛选含 Accepted 的行,输出格式为 「文件名:日志内容」(例如 /tmp/secure:Mar 26 10:00:00 ... Accepted ...)。

  2. cut -d: -f2-

    • -d::指定分隔符为冒号(因为 grep 多文件输出的“文件名”和“内容”用冒号分隔)。
    • -f2-:提取从第2个字段开始到末尾的所有内容(第1个字段是“文件名”,后面的字段是实际日志内容)。

执行后,输出会直接显示日志内容,不再包含 /tmp/secure 等文件名前缀。

可以看看区别:
image
image
理解了逻辑成功可以直接写代码搞出来四个了

image
grep Accepted /tmp/secure-202303* /tmp/secure | cut -d: -f2- | awk '{print $11,$9,$1,$2,$3}'

image
注意printf函数后面是, 再前面加上斜杠n换行
最终结果成功的:
grep Accepted /tmp/secure-202303* /tmp/secure | cut -d: -f2- | awk '{printf "IP:%s 用户:%s %s %s %s\n", $11,$9,$1,$2,$3}'

posted on 2025-08-18 21:50  爱尔奎特‘殷’  阅读(9)  评论(0)    收藏  举报