在描述NET-SNMP安装过程之前,我们先来说一下什么是SNMP。 
Simple Network Management Protocol (SNMP) 是一个被广泛使用的协议,可以监控网络设备(比如路由器)、计算机设备甚至是UPS。Net-SNMP是用于实施SNMP v1,SNMP v2,SNMPv3的应用程序套件,可以使用在IPv4、IPv6的环境中。

一、 NET-SNMP环境

NET-SNMP这个套件包括: 
1. 命令行程序包括: 
 (1)从支持SNMP的设备中检索信息的命令。用于执行单个的请求(snmpget,snmpgetnext),或者执行多个请求(snmpwalk,snmptable,snmpdelta)。 
  (2)可以用于手动设置信息的命令(snmpset)。 
  (3)检索一套固定信息的命令(snmpdf,snmpnetstat,snmpstatus)。 
 (4)可以把MIB oid的信息在“数字”形式和“字符”形式之间进行转换的命令(snmptranslate),它还能显示MIB的内容和结构。 
2. 使用Tk/perl来提供一个图形化的MIB浏览器(tkmib)。 

3. 一个接收SNMPtrap信息的daemon。经过选择的snmp通知信息可以被日志记录(记录在syslog,或者NT的日志,或者文本文件),转发到另一个SNMP管理系统,或者传递到其它的程序。 

4. 一个可扩展的代理程序(snmpd),用于对管理系统提出的SNMP请求做出响应。这包括了内建的多种支持性: 

5. 支持广泛的MIB信息模块,可以使用动态加载的模块进行扩展,可以使用外部的脚本和命令进行扩展,对多路复用SNMP(SMUX)和代理可扩展性协议(AgentX)的支持。 

6. 包括一个库,用于支持对新的SNMP开发,支持C和Perl API。 

Net-SNMP对于许多的UNIX和类UNIX操作系统都是支持的,也支持windows。注意:对于不同的系统功能会有所变化。请阅读你所在平台的README文件。 

    如果你的服务器上没有安装NET-SNMP或者其他用于实施SNMP协议的软件,那么你安装MRTG就会报错了。 

二、 NET-SNMP的安装
(一)软件包方式安装
1. 下载NET-SNMP 
根据不同版本:使用yum  、apt-get等安装net-snmp*

2. 安装NET-SNMP 
gunzip -c net-snmp-5.4.1.tar.gz | tar xf - 
cd net-snmp-5.4.1 
./configure 
make 

3. 运行NET-SNMP 
首先查看当前系统的snmpd命令是否是你刚刚安装的版本 
snmpd -v 
NET-SNMP version:  5.4.1 
Web:               http://www.net-snmp.org/ 
Email:             net-snmp-coders@lists.sourceforge.net 
    出现这个结果,这就表示现在系统默认的smpd就是你刚刚安装的那个,如果不是,那么你需要检查一下是否有老版本的存在。 
按照我以上的方法,snmpd应该被安装在: 
#which snmpd 
/usr/local/sbin/snmpd 

4. 编辑配置文件snmpd.conf 

创建配置文件snmpd.conf,可以使用命令: snmpconf -g basic_setup 

回答问题即可,但是较麻烦,手工创建很简单。 

vi /usr/local/share/snmp/snmpd.conf (Fedora yum:/etc/snmp/snmpd.conf)

 syslocation  "SHANGHAI P.R.China" 
 syscontact  webmaster@domainname.com 
 rocommunity  whatever 
 rwcommunity  whoareyou 

 #这个rocommunity和rwcommunity的值你可以自己定义 

 snmpd.conf文件只写上面四句话就足够了。 (二)YUM方式安装
Fedora 10下配置SNMP
1、SNMP的安装
Fedora10下安装SNMP
#yum install net-snmp*
相关文件
/etc/snmp/snmpd.conf
 /etc/snmp/snmp.conf
 /etc/init.d/snmpd

2、SNMP的配置 

(1).确保本机安装了snmp服务 //查询本机安装了哪些snmp包

#rpm -qa|grep snmp

查询本机net-snmp 版本:    #snmpd -v

(2)环境配置命令:             #snmpconf

运行后提示有三个配置文件: snmpd.conf,snmptraps.conf,snmp.conf

snmpd.conf:配置代理和管理端通信时的参数

snmp.conf:与mib库设置相关的配置文件

snmptraps.conf:代理陷阱配置

(3).snmpd.conf文件配置

#vim /etc/snmp/snmpd.conf

1) 修改41行,默认community string(密码),更改public为自己的查询密码,或不改也行。

    com2sec notConfigUser default public

2) 去掉89行前面#号

    #view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc

3) 修改151行

    #access notConfigGroup "" any noauth exact roview rwview none

   为:

     access notConfigGroup "" any noauth exact mib2 none none

(4). 重启snmpd服务

#/etc/rc.d/init.d/snmpd restart

或:

#service snmpd restart

(5).确保开放udp 161端口:

# iptables -L -n

(6).添加snmpd服务自启动:  

查看是否已是自启动:  

如果不是:               #chkconfig --add snmpd

三、 测试实例:

1)  snmpget——snmpget [OPTIONS] AGENT OID [OID]...用来查询叶子节点

实例:snmpget –v2c –c public localhost .1.3.6.1.2.1.1.5.0

-v2c:     使用的是2c的snmp版本,可选1|2c|3

  -c public:community 名为public

  localhost: 代理的地址,这里因为代理运行在本机上,所以可用localhost

  .1.3…….0:这里查询的是.iso.org.dod.internet.mgmt.mib-2.system.sysName,其Oid为.1.3.6.1.2.1.1.5,使用这个命令使叶子节点要在后面加.0。

2) snmpgetnext——snmpgetnext [OPTIONS] AGENT OID [OID]...通过父节点查询叶子节点

实例:snmpgetnext –v2c –c public localhost .1.3.6.1.2.1.1

这个命令假设不知道叶子节点,但知道父节点,则可遍历到第一个叶子节点。此例结果等同于上一个例子。Oid也可输入.1.3.6.1.2,因为它是按字典顺序遍历的。

3) snmptable——snmptable [OPTIONS] AGENT TABLE-OID 用来查询表对象

实例:snmptable –v2c –c public localhost .1.3.6.1.2.1.4.20

这个命令查询表对象,本例中查询的是.iso.org.dod.internet.mgmt.mib-2.ip.ipAddrTable 

4)snmpset——snmpset [OPTIONS] AGENT OID TYPE VALUE [OID TYPE VALUE]...修改数据

   实例:snmpset –v2c –c public localhost .1.3.6.1.2.1.4.21.1.3.x i 99

        x:在这里是索引值,表示表项中某一列的第几个数据,根据要求设定    

        i: 这里是列数据类型,包括i: INTEGER, u: unsigned INTEGER, t: TIMETICKS,

a: IPADDRESS o: OBJID, s: STRING, x: HEX STRING, 

d: DECIMAL STRING, b: BITS U: unsigned int64, 

I: signed int64, F: float, D: double

5) mib2c 用来把mib库文件编译成.c和.h模版。具体使用在下面章节的应用中介绍

四、编程日志

1. Net-snmp 的API接口:

/usr/include/net-snmp/library/snmp_api.h

2. net-snmp官网,Manager端查询代码,编译通过,可以通过snmp查询localhost的信息。