在SNMP定义中,我们知道它是具有Trap功能的。这个功能是什么意思呢?这还是先从它的意思说起。首先Trap在SNMP中我们可以翻译成陷阱或者是自陷。被管理设备中的代理可以在任何时候向网络管理工作站报告错误情况,例如预制定阈值越界程度等等。代理并不需要等到管理工作站为获得这些错误情况而轮询他的时候才会报告。这些错误情况就是众所周知的SNMP自陷(trap)。
在这种结合的方法中,当一个设备产生了一个自陷时,你可以使用网络管理工作站来查询该设备(假设它仍然是可到达的),以获得更多的信息。
用snmptrapd接收SNMP trap信息,并将其写入特定文档2009-03-20 14:42最近在研究snmp trap、snmptrapd信息,目前为止还没研究出如何使snmp trap自动发信息。但是可以用snmptrapd接收SNMP trap信息,并将其写入特定文档。
一、管理端
建立/usr/share/snmp/snmptrapd.conf(我的机器上是这个,不同机器不同,可能有的放在/etc/snmp,/usr/local/share/snmp/下,视不同情况慢慢实验)
加入以下一行:
设置所有用户的访问权限:可执行,记录,传递:
authcommunity execute,log,net public
设置traphandle(即收到.1.3.6.1.4.1.2021.251.1类OID信息时,执行test.pl)
traphandle .1.3.6.1.4.1.2021.251.1 /home/long/test.pl
这里.1.3.6.1.4.1.2021.251.1是Enterprise-OID
/home/long/test.pl是一个处理的perl文件:
#!/usr/bin/perl
use strict;
my $file="file.trap";
open(HANDOUT,">>./$file");
while(<STDIN>)
{
print HANDOUT "$_";
}
这是将snmp trap发过来的数据包输入到file.trap文件中然后启动/etc/init.d/snmpd start,这个要先启动,然后使用"snmptrapd -c /etc/snmp/snmptrapd.conf"
二、代理端
在另外一台机器中输入命令:
snmptrap-v 2c -c public 192.168.126.99 "" .1.3.6.1.4.1.2021.251.1 sysLocation.0 s "longtengfei"
192.168.126.99 就是刚才的管理端的地址,.1.3.6.1.4.1.2021.251.1对应的就是管理端的snmptrapd.conf中的Enterprise-OID.
执行的结过就会出现:在file.trap(在/root/file.trap目录下)文件内容变成:
<UNKNOWN>UDP:[192.168.126.200]:35327DISMAN-EVENT-MIB::sysUpTimeInstance 3:1:37:20:21
SNMPv2-MIB::snmpTrapOID.0 UCD-SNMP-MIB::ucdStartSNMPv2-MIB::sysLocation.0 longtengfei