搭建一个SNMP环境可以方便学习,也可直观的了解SNMP中各种实体及其行为,更加有效的学习。此处用net-snmp软件包搭建SNMP环境。
1net-snmp简介
net-snmp是个开源的SNMP实现项目。支持SNMPv1、SNMPv2、SNMPv3,支持基于IPv4和IPv6的SNMP应用程序开发。
net-snmp包括以下内容:
l完整的API用于SNMP应用程序开发(包括c和perl的API);
l一个可扩展的SNMP代理程序(snmpd);开发者可开发动态模块扩展snmpd,net-snmp内置扩展子代理与主代理的通信协议;
l提供众多命令行工具检查和使用SNMP协议;
l一个trap接收进程,用于接收和显示trap。并可以将trap记录到日志文件里;
l一个图形化的MIB浏览工具(tkmib:基于Tk/Perl的);
net-snmp被很多商业化linux包含,大多少的linux使用net-snmp的主代理实现Linux的SNMP支持。
2安装与配置
net-snmp需要经过安装和配置两个主要步骤才可以使用。
2.1操作系统
net-snmp可以在BSOUNIX、Linux、Windows等操作系统上编译使用。此处我们选择Linux操作系统。如果没有第二台机器装Linux,可以在Windows下安装一个VMWare(5.5以上版本),新建一个虚拟机,在虚拟机上安装Linux。
安装Linux时需要选择安装开发套件,否则编译net-snmp时会缺少编译和连接工具。
2.2下载
net-snmp下载地址:http://www.net-snmp.org/download.html可以选择下载二进制文件或源码。源码需要自己编译,二进制只有Linux版本。
该处源码以net-snmp-5.2.2.tar为例。
2.3解压
Su–root//切换到root用户,否则后面的编译和安装会有问题。
Tar–xvfnet-snmp-5.2.2.tar//进入net-snmp源码目录后,执行该指令进行解压;
2.4编译准备
编译之前需要进行编译准备,以生成编译所需的配置文件和Makefile,执行下列命令:
cdnet-snmp-5.2.2
./configure
检查编译环境的最后会提示输入一些配置信息。一般取默认值即可(版本号笔者选择2)。net-snmp提供可扩展的代理,安装后运行在本机上,使本机成为一台被管理设备。最后配置检查程序会生成相关配置文件、编译及安装所需要的输入文件及相应的Makefile。
2.5编译
make//使用编译准备步骤生成的Makefile,就可以编译net-snmp了。编译生成net-snmp的C语言开发库、SNMP工具、可扩展的主代理、开发工具。
2.6安装
makeinstall//
net-snmp编译完成后需要进行安装。默认安装情况下,安装后的文件和路径为:
1)可扩展代理snmpd位于:/usr/local/share/net-snmp
2)C语言开发库位于:/usr/local/share/lib
3)C语言开发头文件位于:/usr/local/share/include
4)net-snmp提供的SNMP工具位于:/usr/local/share/net-snmp
5)net-snmp依赖的MIB文件位于:/usr/local/share/net-snmp/mibs
6)net-snmp依赖的配置文件:/usr/local/share/net-snmp/conf/etc/snmp
2.7配置文件
需要为我们的测试环境配置一个学习用的配置文件。
Vi/etc/snmp/snmpd.conf//进入编辑net-snmp的配置文件;
2.8验证
安装完成后需要验证是否可以正常工作。
1)Snmpd//启动代理。验证主代理是否可以正常启动;
也可以加入参数使snmpd使用指定配置文件启动:
Snmpd-C–c/etc/snmp/snmpd.conf//该方式,我们可以配置很多不同的配置文件,设置不同的运行环境,便于学习和开发。
2)Ps-aef|grepsnmpd//检查代理是否已启动。(代理是守护进行,执行后会到后台运行)
3)从代理中读取一个管理对象验证代理是否正常运行。
Snmpget-v2c–cpubliclocalhostsysDescr.o//读取MIB-II表中的sysDescr对象,该对象表示设备的描述信息。执行该命令后应该得到类似以下的结果:SNMPv2-MIV::sysDescr.0=STRING:linuxleelin.leelindomain2.4.18-14#1WedSep413:35:50EDT2002i686
3工具使用介绍
net-snmp提供了许多工具使用和调试SNMP,下面简单说明。具体参数请参见相应工具的Manpage。方法:man<command>,例如:mansnmpget
#snmpwalk-v1-cpubliclocalhost.1(是否可以从.1开始采集服务器数据)
#snmpwalk-v1-cpubliclocalhostdskPercent.1(看看刚配置过的硬盘监测是否成功)