traphandle的使用
前面一篇博客里提到在snmptrapd.conf文件中配置traphandle 能够接收指定的OID报文信息后,调用相应的处理程序对报文进行相应的处理操作。并且可以在调用的时候给程序传递参数。
具体格式为:
TraphandleOID|default PROGRAM [ARGS ...]
例如:
traphandle .1.3.6.1.4.1.2021.251.1 /root/traptest/test.pl test_param
traphandle使用的简单示例
traphandle DISMAN-EVENT-MIB::mteTriggerFired my_command
如上,表示snmptrapd收到DISMAN-EVENT-MIB::mteTriggerFired 对应的snmptrapd OID的报文信息的时候调用 my_command 命令。
(注:这里使用的OID和snmpd里使用的OID不同,例如上面的OID可以接收proc的进程异常报文信息,但是使用snmpd的OID UCD-SNMP-MIB::prTable 收不到该内容的)
如上图所示,在snmptrapd.conf文件中加入traphandle 选项内容。然后
snmptrapd -C -c /usr/local/share/snmp/snmptrapd.conf -df -Lo
启动snmptrapd
随后再把之前配置好的有进程监控proc的snmpd.conf配置的snmpd服务启动。
如图所示,当snmpd启动的时候,snmptrapd接收到proc的snmp报文信息,同时调用my_command命令。但是my_command是随便取得名字,在系统中并不存在,所以报错。
但是以上验证了了,traphandle在收到指定OID报文后确实会调用指定的其他程序。
Forward 选项的使用
上面一篇博客内容里提到forward可以转发指定的OID 报文信息。从接收到的机器转发到其他机器上。
forward default/OID destination
如图所示,该snmptrapd服务会转发除掉traphandle 已经监控的DISMAN-EVENT-MIB::mteTriggerFired 报文之外的其他报文到192.139.68.1的机器上。
snmptrapd -C -c /usr/local/share/snmp/snmptrapd.conf -df -Lo
启动snmptrapd。
使用snmptrap模拟发送报文
snmptrap -v 2c -cpublic 127.0.0.1 "" .1.3.6.1.4.1.2021.251.1 sysLocation.0 s "test_info"