公司有一款产品是基于SNMP进行管理的。所以自己也就摸索着,学习点有关这方面的知识。
有关SnmpTrap的理论知识我就不做介绍了。你可以去百度中找到很多很多有关这方面的介绍。说一下自我对这方面的理解:snmp trap162其实就相当于服务器端,主要用于接收(公司产品就是一个trap)。而开启SNMP161的机器就相当于客户端,主要用于发送。当客户端主动向服务器端发起请求或者报告相关的信息,此时服务器端会接收到相关的信息,然后服务器端在进行相关的处理。
我们这次试验的目的就是模拟SnmpTrap的发送与接收。这主要牵涉到两个软件TrapGen和SNMP_Trap_Watcher,有关这两个软件的下载地址,我会在文章末尾附上。而TrapGenz主要是用于发送有关SNMP的告警信息。而SNMP_Trap_Watcher主要是用于接受SNMP的告警信息。有关TrapGen软件的详细使用,可以参考我另外一篇文章《烂泥:TrapGen 使用说明》。
在我们开始试验之前,我们首先要你部署TrapGen,我现在把TrapGen部署在windows/sysytem32下。如下图:
具体为什么这样部署,你也可以参考我另外一篇文章《烂泥:有关系统环境变量的设置问题》。
部署完毕后,我们就可以进行接下来的实验了。
首先、打开SNMP_Trap_Watcher,如下图:
该软件会自动检测SNMPTrap的162端口是否被占用,如果占用的话,它会提示的。如下图:
如何找出是哪一个进程占用了该端口,我们可以使用“netstat –ano |find “162””命令,找出来,如下图示:
通过上图我们找到占用162端口的进程PID号,然后我们再任务管理器中找到该进程,如下图示:
通过上图我们可以很明显的看到原来是snmptrap.exe进程占用了162端口,我们只需要把改进成禁用或者是禁用该进程的服务即可。snmptrap.exe其实是windows中的SNMPTrap服务所使用的进程,我们只需要把SNMPTrap服务禁用或者停止即可。如下图示:
停止SNMPTrap服务后,我们再次使用“netstat –ano |find “162””命令,看看实际的效果:
现在我们的SNMP_Trap_Watcher就可以正常运行了。SNMP_Trap_Watcher正常后,我们来通过TrapGen手动产生一个告警,代码为“trapgen -d ilanni.com -v 1.3.6.1.4.1.1824.1.0.0.1 STRING “This is a test snmptrap””,如下图:
我们通过上图可以看到,SNMP_Trap_Watche已经接收到,我们发送的测试告警信息“This is a test snmptrap”。说明我们的实验已经成功了。