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