安全日志分析
要打“”“” 英语的 不然过滤不出来
分析日志 /root/secure.zip ,编写脚本 /root/12.sh,如右图(注意对齐):
第一步:
分析日志:
第一步:过滤然后分析:
可以使用 awk
的 printf
功能来精确控制输出格式,将提取的字段与固定文本(如 IP:
、用户:
、登录成功
)拼接。
具体命令
grep Accepted /tmp/secure | awk '{printf "IP: %s 用户: %s %s %s %s 登录成功\n", $11, $9, $1, $2, $3}'
命令解释
grep Accepted /tmp/secure
:筛选/tmp/secure
中包含Accepted
(SSH 成功登录)的行。awk '{printf ...}'
:对筛选后的每一行进行格式化输出:%s
是字符串占位符,依次对应后面的变量($11
为 IP、$9
为用户、$1
为月份、$2
为日期、$3
为时间)。- 拼接固定文本
IP:
、用户:
、登录成功
,并通过\n
换行。
执行该命令后,输出会直接符合目标格式:
IP: 120.244.93.139 用户: root Mar 26 23:08:45 登录成功
IP: 120.244.93.30 用户: root Apr 1 18:23:14 登录成功
IP: 120.244.93.30 用户: root Apr 1 18:24:40 登录成功
注意:!!!!!!!!!!
print是正常awk取列,与printf不一样,printf 可以用 %s 站位
printf是rintf函数是格式输出函数,其关键字最末一个字母f即为“格式(format)”之意。其功能是按照用户指定的格式,把指定的数据显示到显示器屏幕上。
printf函数是一个标准库函数,它是函数原型在头文件“stdio.h”。但作为一个特例,不要求在使用printf函数之前必须包含stdio.h文件。
最后结果: grep Accepted /tmp/secure | awk '{printf "ip: %s 用户:%s %s %s %s 登录成功\n", $11,$9,$1,$2,$3}' (可以自己推出来)