背景:公司的审计日志经常出现不记录命令的情况,但是又无法监控到审计功能是否正常。所以我们思路是,每天从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.7importcommands,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)forI inecss:    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))    ifstatus == 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,如需转载请自行联系原作者