背景:公司的审计日志经常出现不记录命令的情况,但是又无法监控到审计功能是否正常。所以我们思路是,每天从CMDB服务器 ssh登录到每一台主机。如果审计功能正常,则一定会在auditlog.info文件中有登录的记录。如果24小时内这个文件没有任何变化,则表明,该主机的audit功能异常,无法记录日志了。
创建登录脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#!/usr/bin/env python2.7
import
commands,requests,json
#host_ip = '10.47.102.185'
url =
'http://10.47.102.185/api/ecs'
r = requests.get(url)
ecss = json.loads(r.text)
for
I
in
ecss:
host_ip = I.get(
'ip'
)
# if host_ip != '10.174.107.151':
status,result = commands.getstatusoutput(
'ssh -o ConnectTimeout=3 -o StrictHostKeyChecking=no root@{0} "echo \"audit check\""'
.
format
(host_ip))
if
status == 0:
print
'{0} check success'
.
format
(host_ip)
else
:
print
'{0} check failed'
.
format
(host_ip)
|
ConnectTimeout=3 表示超时时间为3秒
1
|
StrictHostKeyChecking
|
首次 ssh 登陆时提示确认 yes/no,确认 yes 后会把远程节点加入到本地的 ~/.ssh/known_hosts 中,下次再连接同一节点则不再提示。为了省事不确认,可以使用如下参数登陆
ssh -o StrictHostKeyChecking=no ...
这样便不再确认且自动把远程主机的信息添加到 ~/.ssh/known_hosts 中。
创建每天定时任务:
1
|
10 1 * * * root
/usr/bin/python2
.7
/srv/script/audit_check
.py
|
Trigger:
1
|
{Template OS Linux:vfs.
file
.cksum[
/var/log/userlog
.info].
diff
(0)}=0
|
本文转自 曾哥最爱 51CTO博客,原文链接:http://blog.51cto.com/zengestudy/1835652,如需转载请自行联系原作者