net-snmp在Linux下的安装过程在描述NET-SNMP安装过程之前,我们先来说一下什么是SNMP。SimpleNetworkManagementProtocol(SNMP)是一个被广泛使用的协议,可以监控网络设备(比如路由器)、计算机设备甚至是UPS。Net-SNMP是用于实施SNMPv1,SNMPv2,SNMPv3的应用程序套件,可以使用在IPv4、IPv6的环境中。一、NET-SNMP环境NET-SNMP这个套件包括:1.命令行程序包括:(1)从支持SNMP的设备中检索信息的命令。用于执行单个的请求(snmpget,snmpgetnext),或者执行多个请求(snmpwalk,snmptable,snmpdelta)。(2)可以用于手动设置信息的命令(snmpset)。(3)检索一套固定信息的命令(snmpdf,snmpnetstat,snmpstatus)。(4)可以把MIBoid的信息在“数字”形式和“字符”形式之间进行转换的命令(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和PerlAPI。Net-SNMP对于许多的UNIX和类UNIX操作系统都是支持的,也支持windows。注意:对于不同的系统功能会有所变化。请阅读你所在平台的README文件。如果你的服务器上没有安装NET-SNMP或者其他用于实施SNMP协议的软件,那么你安装MRTG就会报错了。二、NET-SNMP的安装(一)软件包方式安装1.下载NET-SNMP根据不同版本:使用yum、apt-get等安装net-snmp*2.安装NET-SNMPgunzip-cnet-snmp-5.4.1.tar.gz|tarxf-cdnet-snmp-5.4.1./configuremake3.运行NET-SNMP首先查看当前系统的snmpd命令是否是你刚刚安装的版本snmpd-vNET-SNMPversion:5.4.1Web::net-snmp-coders@lists.sourceforge.net出现这个结果,这就表示现在系统默认的smpd就是你刚刚安装的那个,如果不是,那么你需要检查一下是否有老版本的存在。按照我以上的方法,snmpd应该被安装在:#whichsnmpd/usr/local/sbin/snmpd4.编辑配置文件snmpd.conf创建配置文件snmpd.conf,可以使用命令:snmpconf-gbasic_setup回答问题即可,但是较麻烦,手工创建很简单。vi/usr/local/share/snmp/snmpd.conf(Fedorayum:/etc/snmp/snmpd.conf)syslocationSHANGHAIP.R.Chinasyscontactwebmaster@domainname.comrocommunitywhateverrwcommunitywhoareyou#这个rocommunity和rwcommunity的值你可以自己定义snmpd.conf文件只写上面四句话就足够了。(二)YUM方式安装Fedora10下配置SNMP1、SNMP的安装Fedora10下安装SNMP#yuminstallnet-snmp*相关文件/etc/snmp/snmpd.conf/etc/snmp/snmp.conf/etc/init.d/snmpd2、SNMP的配置(1).确保本机安装了snmp服务//查询本机安装了哪些snmp包#rpm-qa|grepsnmp查询本机net-snmp版本:#snmpd-v(2)环境配置命令:#snmpconf运行后提示有三个配置文件:snmpd.conf,snmptraps.conf,snmp.confsnmpd.conf:配置代理和管理端通信时的参数snmp.conf:与mib库设置相关的配置文件snmptraps.conf:代理陷阱配置(3).snmpd.conf文件配置#vim/etc/snmp/snmpd.conf1)修改41行,默认communitystring(密码),更改public为自己的查询密码,或不改也行。com2secnotConfigUserdefaultpublic2)去掉89行前面#号#viewmib2included.iso.org.dod.internet.mgmt.mib-2fc3)修改151行#accessnotConfigGroupanynoauthexactroviewrwviewnone为:accessnotConfigGroupanynoauthexactmib2nonenone(4).重启snmpd服务#/etc/rc.d/init.d/snmpdrestart或:#servicesnmpdrestart(5).确保开放udp161端口:#iptables-L-n(6).添加snmpd服务自启动:#chkconfigsnmpdon查看是否已是自启动:#chkconfig--list|grepsnmpd如果不是:#chkconfig--addsnmpd三、测试实例:1)snmpget——snmpget[OPTIONS]AGENTOID[OID]...用来查询叶子节点实例:snmpget–v2c–cpubliclocalhost.1.3.6.1.2.1.1.5.0-v2c:使用的是2c的snmp版本,可选1|2c|3-cpublic:community名为publiclocalhost:代理的地址,这里因为代理运行在本机上,所以可用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]AGENTOID[OID]...通过父节点查询叶子节点实例:snmpgetnext–v2c–cpubliclocalhost.1.3.6.1.2.1.1这个命令假设不知道叶子节点,但知道父节点,则可遍历到第一个叶子节点。此例结果等同于上一个例子。Oid也可输入.1.3.6.1.2,因为它是按字典顺序遍历的。3)snmptable——snmptable[OPTIONS]AGENTTABLE-OID用来查询表对象实例:snmptable–v2c–cpubliclocalhost.1.3.6.1.2.1.4.20这个命令查询表对象,本例中查询的是.iso.org.dod.internet.mgmt.mib-2.ip.ipAddrTable4)snmpset——snmpset[OPTIONS]AGENTOIDTYPEVALUE[OIDTYPEVALUE]...修改数据实例:snmpset–v2c–cpubliclocalhost.1.3.6.1.2.1.4.21.1.3.xi99x:在这里是索引值,表示表项中某一列的第几个数据,根据要求设定i:这里是列数据类型,包括i:INTEGER,u:unsignedINTEGER,t:TIMETICKS,a:IPADDRESSo:OBJID,s:STRING,x:HEXSTRING,d:DECIMALSTRING,b:BITSU:unsignedint64,I:signedint64,F:float,D:double5)mib2c用来把mib库文件编译成.c和.h模版。具体使用在下面章节的应用中介绍四、编程日志1.Net-snmp的API接口:/usr/include/net-snmp/library/snmp_api.h2.net-snmp官网,Manager端查询代码,编译通过,可以通过snmp查询localhost的信息。