Chinaunix首页 | 论坛 | 博客
  • 博客访问: 96601
  • 博文数量: 5
  • 博客积分: 361
  • 博客等级: 入伍新兵
  • 技术积分: 140
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-16 16:10
文章分类

全部博文(5)

文章存档

2012年(5)

我的朋友

分类: LINUX

2012-11-15 16:58:47


为进一步提高系统安全,有必要对系统登录的用户数进行监控,脚本内容如下:

#cat check_snmp_usets.py

点击(此处)折叠或打开

  1. #!/usr/bin/python
  2. #_*_ coding: utf-8 _*_
  3. #_*_ coding: cp950 _*_

  4. '''
  5. Create date: 2012-10-24
  6. Last update: 2012-10-24
  7. Version: 1.0
  8. Description: Monitor login users
  9. Author: Victor
  10. QQ:1409175531
  11. '''

  12. import sys
  13. import netsnmp
  14. import os

  15. def help():
  16.   print '''Usage:
  17. %s ''' % (sys.argv[0])

  18. oid = netsnmp.Varbind('HOST-RESOURCES-MIB::hrSystemNumUsers.0')
  19. odilist = netsnmp.VarList(oid)

  20. try:
  21.   resultList = netsnmp.snmpget(oid, Version=2, Community=sys.argv[1], DestHost=sys.argv[2])
  22. except IndexError:
  23.   help()
  24.   sys.exit()

  25. result = str(resultList)[2:-3]
  26. c = result.split()

  27. if not len(sys.argv) == 4:
  28.   help()
  29.   sys.exit()
  30. else:
  31.   try:
  32.     if int(c[0]) < int(sys.argv[3]):
  33.       print 'OK - 登录用户数: %s | 登录用户数: %s (报警阀值: %s)' % (c[0], c[0], sys.argv[3])
  34.       sys.exit(0)
  35.     elif c[0] >= int(sys.argv[3]):
  36.       print 'Warning - 登录用户数: %s | 登录用户数: %s (报警阀值: %s)' % (c[0], c[0], sys.argv[3])
  37.       sys.exit(1)
  38.     else:
  39.       print 'Unknown'
  40.       sys.exit(3)
  41.   except ValueError:
  42.     print 'Warning_threold Must be an integer'


直接执行脚本可以看到脚本的使用方法:
# python check_snmp_users.py 
Usage:
check_snmp_users.py

        团体名,如public;
             主机名或IP地址;  
  报警阀值;

实例:


将check_snmp_users.py脚本放在/usr/local/nagios/libexec目录下,给执行权限。

commands.cfg配置:
define command {
         command_name   snmp_users
         command_line   $USER1$/check_snmp_users.py $ARG1$ '$HOSTADDRESS$' '$ARG2$'
}

services.cfg配置:
define service{
        use                    service02
        host_name              test
        service_description    Login Users
        check_command          snmp_users!public!1  //只要有一个用户登录系统就报警;
}

效果图如下:




PS:本脚本可监控Linux/Windows登陆的用户数。


本文乃何秋平原创文章,请勿转载。如须转载请详细标明转载出处。

阅读(4629) | 评论(0) | 转发(4) |
给主人留下些什么吧!~~