net-snmp-5.7.3配置编译安装

先看一下系统环境

  1. o@o-pc:~/work/_snmp/net-snmp-5.7.3$ uname -a
  2. Linux o-pc 3.16.0-30-generic #40~14.04.1-Ubuntu SMP Thu Jan 15 17:43:14 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

1.下载net-snmp-5.7.3源码包

net snmp的源码包可以到 net-snmp官网上去下载。也可以到sourcefroce上去下载。

net-snmp-5.4.4版下载

  1. o@o-pc:~/work/_snmp$ wget http://downloads.sourceforge.net/project/net-snmp/net-snmp/5.4.4/net-snmp-5.4.4.tar.gz

net-snmp-5.7.3版下载

  1. o@o-pc:~/work/_snmp$ wget http://downloads.sourceforge.net/project/net-snmp/net-snmp/5.7.3/net-snmp-5.7.3.tar.gz

2.解压net-snmp源码包

  1. o@o-pc:~/work/_snmp$ tar -xzvf net-snmp-5.7.3.tar.gz

3.编译安装配置

进入解压的 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" 不变数据存储目录

我们这里只配置安装路径,其它的都使用默认设置。

  1. o@o-pc:~/work/_snmp/net-snmp-5.7.3$ ./configure --prefix=/usr/local/net-snmp

配置时的输出信息

  1. checking what to build and install... agent apps man local mibs
  2. using default persistent mask 077
  3. using default temporary file pattern /tmp/snmpdXXXXXX
  4. using default AgentX socket /var/agentx/master
  5. using default "enterprise.net-snmp"
  6. using default enterprise sysOID "NET-SNMP-MIB::netSnmpAgentOIDs..."
  7. using default notifications "NET-SNMP-MIB::netSnmpNotifications"
  8. using OS default send buffer size for server sockets
  9. using OS default recv buffer size for server sockets
  10. using OS default send buffer size for client sockets
  11. using OS default recv buffer size for client sockets
  12. checking whether to prompt for values... configure:
  13. ************** Configuration Section **************

注意: 当输入配置之后按回车键之后,系统会有一段时间执行配置。这段时间的执行过程是不会停止的,当出现停止要按某个键才能继续往下执行,说明配置有问题,请取消当前执行重新检查配置,确保配置正确无误。 以免以后的安装出错,或者安装完成之后不能正常使用。 

执行完配置(没有中断,没有要求按某个键)之后会出现如下所示的信息。有可能出现的和下面的不一样,这取决于配置,但只要出现和这个相似的部分,说明配置是成功的。没有必要仔细看这个配置摘要。

  1. Net-SNMP configuration summary:
  2. ---------------------------------------------------------
  3. SNMP Versions Supported: 1 2c 3
  4. Building for: linux
  5. Net-SNMP Version: 5.7.3
  6. Network transport support: Callback Unix Alias TCP UDP IPv4Base SocketBase TCPBase UDPIPv4Base UDPBase
  7. SNMPv3 Security Modules: usm
  8. Agent MIB code: default_modules => snmpv3mibs mibII ucd_snmp notification notification-log-mib target agent_mibs agentx disman/event disman/schedule utilities host
  9. MYSQL Trap Logging: unavailable
  10. Embedded Perl support: disabled
  11. SNMP Perl modules: building -- not embeddable
  12. SNMP Python modules: disabled
  13. Crypto support from: crypto
  14. Authentication support: MD5 SHA1
  15. Encryption support: DES AES
  16. Local DNSSEC validation: disabled
  17. ---------------------------------------------------------

4.编译安装

make编译

  1. o@o-pc:~/work/_snmp/net-snmp-5.7.3$ make
  2. ...
  3. /usr/bin/ld: cannot find -lperl
  4. collect2: error: ld returned 1 exit status
  5. make[1]: *** [libnetsnmpagent.la] 错误 1

cannot find -lperl问题

在make编译的时候遇到了一个错误,提示找不到perl这个库。原因是因为我的电脑上没有安装perl开发环境,现在装一个。

  1. o@o-pc:~/work/_snmp/net-snmp-5.7.3$ sudo apt-get install libperl-dev

也许还会碰到缺少 libtool,openssl,zlib库的情况,请直接安装。

一般遇到这种缺少了什么库的问题,都是通过安装libXXX-dev或者安装XXX-dev来解决。但也不绝对,有的时候是因为相关的库不是安装在系统的默认路径,也没用加入到环境变量中。

make install安装

编译成功后就可以安装了,前面设置了安装路径是/usr/local/net-snmp,因为这个路径是的所有者(own)和所在组(group)都是root,所有需要sudo来执行。

  1. o@o-pc:~/work/_snmp/net-snmp-5.7.3$ sudo make install

安装的时候会大量输出类似于的消息,提示我们安装了某个配置文件到/usr/local/net-snmp/share/snmp目录

install: installed XXX.conf in /usr/local/net-snmp/share/snmp

安装完成后进入目录/usr/local/net-snmp/sbin即可看到可执行文件snmpd,执行输出一下版本信息。因为我们这里还没有把它的路径添加到环境变量,所有还不能在任意位置直接输入snmpd来运行。

  1. o@o-pc:/usr/local/net-snmp/sbin$ ./snmpd -v
  2. NET-SNMP version: 5.7.3
  3. Web: http://www.net-snmp.org/
  4. Email: net-snmp-coders@lists.sourceforge.net

5. snmpd.conf配置

snmpd.conf是snmp服务的配置文件。

5.1 snmpd.conf文件生成和修改

生成snmpd.conf

先将EXAMPLE.conf文件复制到/usr/local/net-snmp/share/snmp,并重命名为snmpd.conf

  1. o@o-pc:~/work/_snmp/net-snmp-5.7.3$ sudo cp EXAMPLE.conf /usr/local/net-snmp/share/snmp/snmpd.conf

上面是一个比较复杂的配置文件,其实可以简单一点。可以只需要下面说的几点内容写到配置文件,其它的都是多余的

修改snmpd.conf

snmpd.conf文件的修改可以参考这些文章

1.net-snmp的配置文件snmpd.conf配置说明

2.snmpd.conf的基础配置

这里按照上面给出的两篇文章内容来进行的修改(主要是第二篇)。

下面的配置中,使用到的com2sec/group/view/access的说明在EXAMPLE.conf文件的注释中可以看到(大致是65行)。

首先定义一个首共同体名称(community),这里是 public。以及可以访问这个 public 的用户名(sec name),这里是 notConfigUser 。public 相当于用户 notConfigUser 的密码。

在snmpd.conf文件中添加下面的语句。(第一句是注释)

  1. # sec.name source community
  2. com2sec notConfigUser default public

然后定义一个组名(groupName)这里是 notConfigGroup,以及组的安全级别,并把 notConfigGroup 这个用户加到这个组中。

在snmpd.conf文件中添加下面的语句。(第一句是注释)

  1. # groupName securityModel securityName
  2. group notConfigGroup v1 notConfigUser
  3. group notConfigGroup v2c notConfigUser

接着定义一个可操作的视图(view)名, 这里是 all,范围是 .1。

在snmpd.conf文件中添加下面的语句。(第一句是注释)

  1. # name incl/excl subtree mask(optional)
  2. view all included .1

最后定义 notConfigUser 这个组在 all 这个视图范围内可做的操作,这时定义了 notConfigUser 组的成员可对 .1 这个视图做只读操作。

  1. # group context sec.model sec.level prefix read write notif
  2. access notConfigGroup "" any noauth exact all none none

还可以使用snmpconf程序来设置,这个程序在安装目录的bin目录下。它会提示你输入相关的设置。

  1. o@o-pc:/usr/local/net-snmp/bin$ ./snmpconf -g basic_setup
  2. The following installed configuration files were found:
  3. 1: /usr/local/net-snmp/share/snmp/snmpd.conf
  4. Would you like me to read them in? Their content will be merged with the
  5. output files created by this session.
  6. Valid answer examples: "all", "none","3","1,2,5"
  7. Read in which (default = all): all
  8. ************************************************
  9. *** Beginning basic system information setup ***
  10. ************************************************
  11. Do you want to configure the information returned in the system MIB group (contact info, etc)? (default = y):
  12. ...

启动netsnmp服务

我们可以使用命令service --sratus-all来查看当前的服务状态。可以看到我这台机器上是没有netsnmp这个服务的。没关系,我们并不是特别需要它。具体见下面

  1. o@o-pc:/usr/local/net-snmp/share/snmp$ service --status-all
  2. [ + ] acpid
  3. [ - ] anacron
  4. [ + ] apache
  5. [ - ] apparmor
  6. [ ? ] apport
  7. [ + ] avahi-daemon
  8. [ + ] bluetooth
  9. [ - ] brltty
  10. [ ? ] console-setup
  11. [ + ] cron
  12. [ + ] cups
  13. [ + ] cups-browsed
  14. [ - ] dbus
  15. [ ? ] dns-clean
  16. [ + ] friendly-recovery
  17. [ - ] gdm
  18. [ - ] grub-common
  19. [ ? ] irqbalance
  20. [ + ] kerneloops
  21. [ ? ] killprocs
  22. [ ? ] kmod
  23. [ ? ] networking
  24. [ ? ] ondemand
  25. [ ? ] pppd-dns
  26. [ - ] procps
  27. [ - ] pulseaudio
  28. [ ? ] rc.local
  29. [ + ] resolvconf
  30. [ - ] rsync
  31. [ + ] rsyslog
  32. [ + ] saned
  33. [ ? ] sendsigs
  34. [ - ] spamassassin
  35. [ ? ] speech-dispatcher
  36. [ - ] sudo
  37. [ - ] udev
  38. [ ? ] umountfs
  39. [ ? ] umountnfs.sh
  40. [ ? ] umountroot
  41. [ - ] unattended-upgrades
  42. [ - ] urandom
  43. [ - ] x11-common
  44. o@o-pc:/usr/local/net-snmp/share/snmp$

现在还没有netsnmp这个服务,那么是不是一定要这个服务呢?不是一定的。因为linux的服务,可以说就是一个守护进程,我们找到这个进程的可执行文件来执行它就是。而这个文件就在安装目录下的sbin目录中。

  1. o@o-pc:/usr/local/net-snmp/sbin$ ls
  2. snmpd snmptrapd

执行它的时候可指定配置文件(如果不带,默认就是这个),下面来执行一下试试

  1. o@o-pc:/usr/local/net-snmp/sbin$ ./snmpd -c ../share/snmp/snmpd.conf

如果执行失败,程序直接退出了,可以使用-f -Le参数来查看错误信息。

其中-f是do not fork from the shell不从shell派生子进程

-L是 toggle options controlling where to log to切换到相关的日志控制,它后面需要跟参数。e:log to standard error 日志到标准错误。

这些相关的参数可以通过./snmpd -h获取。

我这边出现了这样的错误。

  1. o@o-pc:/usr/local/net-snmp/sbin$ ./snmpd -f -Le
  2. Turning on AgentX master support.
  3. Error opening specified endpoint "udp:127.0.0.1:161"
  4. Server Exiting with code 1

这个错误的原因很简单,那就是权限问题。使用sudo来执行就没有问题了。linux上很多问题都是权限的问题。

  1. o@o-pc:/usr/local/net-snmp/sbin$ sudo ./snmpd -f -Le
  2. [sudo] password for o:
  3. NET-SNMP version 5.7.3

这里没有加配置文件路径,是因为使用的默认配置文件/usr/local/net-snmp/share/snmp/snmpd.conf,如果还有别的错误,那么就修改配置文件,只保留上面说到的四点,其余的都删除掉来试试。

其实配置文件还可以这样,这也是从网上找的。

  1. #设置区域
  2. syslocation "SHANGHAI P.R.China"
  3. #设置系统联系人
  4. syscontact webmaster@domainname.com
  5. #设置一个只读账户 read-only community
  6. #下面的 whatever 相当于密码,后面还可以跟一个IP地址,表示监控点主机
  7. rocommunity whatever
  8. #设置一个读写账户 read-write community
  9. rwcommunity whoareyou

执行成功后我们可以进入到bin目录,然后执行snmpwalk,snmpget等命令来查看一下。

  1. o@o-pc:/usr/local/net-snmp/bin$ ./snmpget -v 1 -c public localhost sysUpTime.0
  2. o@o-pc:/usr/local/net-snmp/bin$ ./snmpwalk -v 1 localhost -c public system
  3. o@o-pc:/usr/local/net-snmp/bin$ ./snmpwalk -v 2c -c whatever -m ALL localhost .1.3
  1. o@o-pc:/usr/local/net-snmp/bin$ ./snmpwalk -v 1 172.0.0.1 -c whatever system
  2. Timeout: No Response from 172.0.0.1
  3. o@o-pc:/usr/local/net-snmp/bin$ ./snmpwalk -v 1 localhost -c whatever system
  4. SNMPv2-MIB::sysDescr.0 = STRING: Linux o-pc 3.16.0-30-generic #40~14.04.1-Ubuntu SMP Thu Jan 15 17:43:14 UTC 2015 x86_64
  5. SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
  6. DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (21134) 0:03:31.34
  7. SNMPv2-MIB::sysContact.0 = STRING: webmaster@domainname.com
  8. SNMPv2-MIB::sysName.0 = STRING: o-pc
  9. SNMPv2-MIB::sysLocation.0 = STRING: \"SHANGHAI P.R.China\"
  10. SNMPv2-MIB::sysORLastChange.0 = Timeticks: (0) 0:00:00.00
  11. SNMPv2-MIB::sysORID.1 = OID: SNMP-MPD-MIB::snmpMPDCompliance
  12. SNMPv2-MIB::sysORID.2 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance
  13. SNMPv2-MIB::sysORID.3 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance
  14. SNMPv2-MIB::sysORID.4 = OID: SNMPv2-MIB::snmpMIB
  15. SNMPv2-MIB::sysORID.5 = OID: SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup
  16. SNMPv2-MIB::sysORID.6 = OID: TCP-MIB::tcpMIB
  17. SNMPv2-MIB::sysORID.7 = OID: IP-MIB::ip
  18. SNMPv2-MIB::sysORID.8 = OID: UDP-MIB::udpMIB
  19. SNMPv2-MIB::sysORID.9 = OID: SNMP-NOTIFICATION-MIB::snmpNotifyFullCompliance
  20. SNMPv2-MIB::sysORID.10 = OID: NOTIFICATION-LOG-MIB::notificationLogMIB
  21. SNMPv2-MIB::sysORDescr.1 = STRING: The MIB for Message Processing and Dispatching.
  22. SNMPv2-MIB::sysORDescr.2 = STRING: The management information definitions for the SNMP User-based Security Model.
  23. SNMPv2-MIB::sysORDescr.3 = STRING: The SNMP Management Architecture MIB.
  24. SNMPv2-MIB::sysORDescr.4 = STRING: The MIB module for SNMPv2 entities
  25. SNMPv2-MIB::sysORDescr.5 = STRING: View-based Access Control Model for SNMP.
  26. SNMPv2-MIB::sysORDescr.6 = STRING: The MIB module for managing TCP implementations
  27. SNMPv2-MIB::sysORDescr.7 = STRING: The MIB module for managing IP and ICMP implementations
  28. SNMPv2-MIB::sysORDescr.8 = STRING: The MIB module for managing UDP implementations
  29. SNMPv2-MIB::sysORDescr.9 = STRING: The MIB modules for managing SNMP Notification, plus filtering.
  30. SNMPv2-MIB::sysORDescr.10 = STRING: The MIB module for logging SNMP Notifications.
  31. SNMPv2-MIB::sysORUpTime.1 = Timeticks: (0) 0:00:00.00
  32. SNMPv2-MIB::sysORUpTime.2 = Timeticks: (0) 0:00:00.00
  33. SNMPv2-MIB::sysORUpTime.3 = Timeticks: (0) 0:00:00.00
  34. SNMPv2-MIB::sysORUpTime.4 = Timeticks: (0) 0:00:00.00
  35. SNMPv2-MIB::sysORUpTime.5 = Timeticks: (0) 0:00:00.00
  36. SNMPv2-MIB::sysORUpTime.6 = Timeticks: (0) 0:00:00.00
  37. SNMPv2-MIB::sysORUpTime.7 = Timeticks: (0) 0:00:00.00
  38. SNMPv2-MIB::sysORUpTime.8 = Timeticks: (0) 0:00:00.00
  39. SNMPv2-MIB::sysORUpTime.9 = Timeticks: (0) 0:00:00.00
  40. SNMPv2-MIB::sysORUpTime.10 = Timeticks: (0) 0:00:00.00

net-snmp-5.7.3配置编译安装的更多相关文章

  1. Linux内核分析(一)---linux体系简介|内核源码简介|内核配置编译安装

    原文:Linux内核分析(一)---linux体系简介|内核源码简介|内核配置编译安装 Linux内核分析(一) 从本篇博文开始我将对linux内核进行学习和分析,整个过程必将十分艰辛,但我会坚持到底 ...

  2. 【嵌入式开发】 Linux Kernel 下载 配置 编译 安装 及 驱动简介

    作者 : 韩曙亮 转载请出名出处 : http://blog.csdn.net/shulianghan/article/details/38636827 一. Linux 内核简介 1. 内核功能简介 ...

  3. httpd安装与配置(编译安装)

    httpd简介 httpd是Apache超文本传输协议(HTTP)服务器的主程序.被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池. 通常,httpd不应该被直接调用,而应该在类 ...

  4. Linux下编译安装Apache Http Server

    Linux下编译安装Apache Http Server [TOC] 1.下载httpd-2.4.12.tar.bz2 wget http://mirror.bit.edu.cn/apache/htt ...

  5. 编译安装apache-2.4.18

    apache安装时, 必须要apr和apr-util, 这两个包是必须的 当下载apache的版本过高, 如: apache-2.4.18, 那么要求的apr或apu=apr-util版本将至少在1. ...

  6. CentOS5.5 下编译安装 LAMP

    大纲 1.安装gcc编译器 2.卸载rpm安装的http和mysql软件 3.编译安装php依赖包 4.安装apache软件 5.安装mysql软件 6.安装php软件 7.安装memcache ph ...

  7. 编译安装python3.6后pip3无法安装模块问题处理

    编译安装python3.6之后,使用pip3命令安装第三方库效果如图所示: pip is configured with locations that require TLS/SSL, however ...

  8. CentOS7 源码编译安装Tengine

    简介 Tengine是由淘宝网发起的Web服务器项目.它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性.它的目的是打造一个高效.安全的Web平台. 发展 Tengine的性能和 ...

  9. 源码编译安装lnmp环境

    一.源码编译安装步骤 首先说明源码安装的好处   速度快,可自定义路径 主要有三步:1.配置 进入源码安装包  ./configure --prefix=/uer/local/nginx  可指定参数 ...

随机推荐

  1. Codeforces Round #371 (Div. 2)B. Filya and Homework

    题目链接:http://codeforces.com/problemset/problem/714/B 题目大意: 第一行输入一个n,第二行输入n个数,求是否能找出一个数x,使得n个数中的部分数加上x ...

  2. Visual Studio CLR Profiler

    http://blogs.msdn.com/b/dotnet/archive/2013/04/04/net-memory-allocation-profiling-with-visual-studio ...

  3. MBProgressHUD上传照片进度提示

    第一步,控制器先来个属性 @property (strong, nonatomic) MBProgressHUD *HUD; 第二步,显示与隐藏的调用方法 - (void)hudTipWillShow ...

  4. MVC实现动态二级域名

    前段时间,一个朋友问我ASP.NET MVC下实现动态二级域名的问题.跟他聊了一些解决方案,这里也总结一下,以供参考. 相信大家都发现类似58同城这样的网站,成都的网址是cd.58.com 上海的是s ...

  5. inline-block元素overflow:hidden对齐问题

    inline-block元素设置overflow:hidden后,其本身会上移 解决方法:在该元素或其父元素上设置vertical-align:bottom 原因解释:inline-block元素被设 ...

  6. MongoDB学习笔记(索引)(转)

    一.索引基础:    MongoDB的索引几乎与传统的关系型数据库一模一样,这其中也包括一些基本的优化技巧.下面是创建索引的命令:    > db.test.ensureIndex({" ...

  7. OS命令注入

    SSL http://kb.cnblogs.com/page/162080/ http://baike.baidu.com/link?url=jPitKuDw_ncDlMbOc1SkWzM9TuKX9 ...

  8. 跳出iframe

    摘要 有时候需要用到iframe,但里面的单击里面的链接的时候,总是在该iframe中打开. 解决办法 其实解决起来也很简单. 在iframe中的head标签中添加下面的标签即可. <base ...

  9. UCMA设置lync在线状态

    摘要 UCMA全称Microsoft Unified Communications Managed API,主要用来构建工作在Microsoft Lync Server上的中间层应用程序.开发人员可以 ...

  10. JAVA语言学习笔记(一)

    1 一切都是对象 JAVA中所有代码都必须写在类里面. 方法名和参数列表(它们合起来被称为"方法签名")唯一地标识出某个方法.联想多态. 基本数据类型的"局部变量&quo ...