Chinaunix首页 | 论坛 | 博客
  • 博客访问: 597190
  • 博文数量: 50
  • 博客积分: 4764
  • 博客等级: 上校
  • 技术积分: 597
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-18 09:00
个人简介

资深IT码农,擅长Linux、C/C++、bash

文章分类

全部博文(50)

文章存档

2015年(17)

2014年(2)

2011年(7)

2010年(4)

2009年(20)

分类: 网络与安全

2015-11-18 15:00:32

在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

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