一、下载net-snmp源码包
netsnmp的源码包可以到 net-snmp官网上去下载,http://www.net-snmp.org。二、解压net-snmp源码包
  把下载好的压缩包net-snmp-5.7.3.tar.gz拷贝到linux系统中并解压。  [root@localhost jiangxin]# tar -zxvf net-snmp-5.7.3.tar.gz
三、配置net-snmp
进入解压的 net-snmp-5.7.3文件夹。可以看到configure文件,现在就使用这个文件来自动配置。
当然,自动配置也可以定制一些内容,比如安装路径等。 
 
 ./configure参数                                                          含义
--prefix=/usr/local/net-snmp                                        net snmp的安装路径
--enable-mfd-rewrites                                                 允许新的mfd重写可用的mid模块
--with-default-snmp-version="3"                                   默认的snmp版本
--with-sys-contact="name,E_mail:maileaddress "           该设备的联系人
--with-sys-location="China"                                          该设备的位置
--with-logfile="/var/log/snmpd.log"                               日志文件路径
--with-persistent-directory="/var/net-snmp"                  不变数据存储目录
 
 
我们这里只配置安装路径,其它的都使用默认设置。
[root@localhostnet-snmp-5.7.3]# ./configure --prefix=/usr/local/net-snmp
注意: 当输入配置之后按回车键之后,当系统提示-Press return tocontinue-时,按回车键继续,然后后续的提示都不输入,直接按回车选择默认。
 
 
执行完配置(没有中断,没有要求按某个键)之后会出现如下所示的信息。有可能出现的和下面的不一样,这取决于配置,但只要出现和这个相似的部分,说明配置是成功的。没有必要仔细看这个配置摘要。
 
 
四、编译安装
make编译[root@localhost net-snmp-5.7.3]# make
makeinstall安装
编译成功后就可以安装了,前面设置了安装路径是/usr/local/net-snmp,因为这个路径是的所有者(own)和所在组(group)都是root,所有需要用root权限执行。
[root@localhost net-snmp-5.7.3]# make install
安装完成后进入目录/usr/local/net-snmp/sbin即可看到可执行文件snmpd,执行./snmpd -v输出一下版本信息。因为我们这里还没有把它的路径添加到环境变量,所有还不能在任意位置直接输入snmpd来运行。
[root@localhost sbin]# ./snmpd –v  
NET-SNMP version: 5.7.3
Web:               http://www.net-snmp.org/
Email:             net-snmp-coders@lists.sourceforge.net
五、snmpd.conf配置
snmpd.conf是snmp服务的配置文件。生成snmpd.conf
先将EXAMPLE.conf文件复制到/usr/local/net-snmp/share/snmp,并重命名snmpd.conf
[root@localhost net-snmp-5.7.3]#cp EXAMPLE.conf  /usr/local/net-snmp/share/snmp/snmpd.conf
修改snmpd.conf
使用到的com2sec/group/view/access的说明在EXAMPLE.conf文件的注释中可以看到(大致是65行)。
首先定义一个首共同体名称(community),这里是 public。以及可以访问这个 public 的用户名(sec name),这里是roUser。public 相当于用户roUser 的密码。
在snmpd.conf文件中添加下面的语句。(第一句是注释)#sec.name source community
com2sec roUser localhost public
 
然后定义一个组名(groupName)这里是 notConfigGroup,以及组的安全级别,并把 notConfigGroup 这个用户加到这个组中。在snmpd.conf文件中添加下面的语句。(第一句是注释)
#groupName securityModel securityName
group roGroup v1 roUser
group roGroup v2c roUser
 
接着定义一个可操作的视图(view)名, 这里是all,范围是 .1。
在snmpd.conf文件中添加下面的语句。(第一句是注释) 
#name     incl/excl     subtree         mask(optional)  view  all     included        .1 
 
最后定义notConfigUser 这个组在 all 这个视图范围内可做的操作,这时定义了 notConfigUser组的成员可对 .1 这个视图做只读操作。
 
#group   context sec.model sec.levelprefix  read   write notif access   roGroup  "" any   noauth    exact all   none  none 
 
 
最后所有配置都添加完成,在配置文件中如下图所示 
启动net-snmp服务
进入到sbin目录,然后启动net-snmp
[root@localhost ~]# cd /usr/local/net-snmp/sbin/
[root@localhost sbin]# ./snmpd -f -Le
Turningon AgentX master support.NET-SNMPversion 5.7.3
NoShmem line in /proc/meminfo
这里没有加配置文件路径,是因为使用的默认配置文件/usr/local/netsnmp/share/snmp/snmpd.conf
六、snmp功能测试
执行成功后我们可以进入到/usr/local/net-snmp/bin目录(上面snmpd终端保留,再另开一个终端),然后执行snmpwalk,snmpget等命令来查看一下。抓取操作系统信息
[root@zkj bin]# ./snmpwalk 127.0.0.1 -cpublic -v 2c 1.3.6.1.2.1.1.1
SNMPv2-MIB::sysDescr.0 = STRING: Linux zkj.com 3.10.0-1127.el7.x86_64 #1 SMP Tue Mar 31 23:36:51 UTC 2020 x86_64抓取系统开机时间
[root@zkj bin]# ./snmpwalk 127.0.0.1 -cpublic -v 2c 1.3.6.1.2.1.1.3
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (9099) 0:01:30.99抓取机器名
[root@zkj bin]# ./snmpwalk 127.0.0.1 -cpublic -v 2c 1.3.6.1.2.1.1.5
SNMPv2-MIB::sysName.0 = STRING: zkj.com