在agent中发送SNMP trap

3610阅读 0评论2015-11-18 seaquester
分类:网络与安全

在agent中发送SNMP trap

首先需要编写一个agent,调用 net-snmp的API来发送snmp trap。我们使用net-snmp自带的例子:notification(请参考net-snmp源代码)。

下面是让该agent运行起来的步骤:

1. 编译agent(该例子代码是一个sub-agent,需要用net-snmp-config来编译)
$ net-snmp-config --compile-subagent notification notification.c

2. 配置和启动snmpd
由于该例子代码是一个sub-agent,所以需要snmpd(master agent)才能正常运行。

首先创建一个snmpd.conf文件,内容如下:

  1. # Define target address
  2. trapsink 127.0.0.1:162 public

  3. # Enable sub-agent support
  4. rocommunity public
  5. rwcommunity private
  6. master agentx

然后,启动snmpd(在前台运行,将log信息打印到stdout):
$ sudo snmpd -C -c ./snmpd.conf -f -Lo

也可以在后台运行,并将log信息打印到文件中:
$ sudo snmpd -C -c ./snmpd.conf -Lf /tmp/snmpd.log

3. 配置和启动 snmptrapd
我们需要一个接收snmp trap的程序,这里我们使用snmptrapd。

首先,创建一个 snmptrapd.conf 文件,内容如下:
authCommunity    log,execute,net public
在这里,为了简单,我们没有指定收到trap后对应的处理程序。

然后启动snmptrapd(在前台运行,将log信息打印到stdout):
$ sudo snmptrapd -C -c ./snmptrapd.conf -f -Lo
也可以在后台运行,并将log信息打印到文件中:
$ sudo snmptrapd -C -c ./snmptrapd.conf -Lf /tmp/trapd.log

4. 启动 sub-agent
$ sudo ./notification

5. notification(通过snmpd)将每隔30秒给snmptrapd发送一个信息,查看snmptrapd的log信息可以看到notification程序发送的trap。
  1. 2014-01-15 10:42:29 localhost [172.21.73.150] (via UDP: [127.0.0.1]:42705->[127.0.0.1]) TRAP, SNMP v1, community public
  2. NET-SNMP-EXAMPLES-MIB::netSnmpExampleNotifications Enterprise Specific Trap (NET-SNMP-EXAMPLES-MIB::netSnmpExampleHeartbeatNotification) Uptime: 0:01:50.51
  3. NET-SNMP-EXAMPLES-MIB::netSnmpExampleHeartbeatRate.0 = INTEGER: 30

上一篇:RPC超时机制
下一篇:升级CentOS 6的Kernel到v3.x