`
fp_moon
  • 浏览: 981703 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

移殖net-snmp和应用net-snmp开发详解 -转

 
阅读更多

移殖net-snmp和应用net-snmp开发详解

@1.       获取net-snmp开发包

 

可以用开源上http://www.net-snmp.org/download.html获取自己所需要的各种版本。

 

@2.       分析需求,进行合理配置

 

比如要不要将其编译成动态库,还是静态库;要不要某些库;等等。可以通过在其目录下执行./configure  --help即可知道她有配置的选项。比如“—host=xxx”配置她将在什么样的环境下运行,“—build=xxx”配置她将在什么环境下建立的(即本机环境),“—with-endianness=xxx”配置所移殖的CPU是工作在大头模式还是小头模式,“—target=xxx”目标工具(即xxx-gcc, xxx-ar等等工具的xxx),“—disable-debug”不使能调试等等。下面说下我将net-snmp-5.2移殖到小头mips的配置和编译过程:

 

#tar xzvf net-snmp-5.2.tar.gz

#cd net-snmp-5.2

#./configure --host=mipsel-linux --build=i386-linux --target=mipsel-linux --disable-shared --with-endianness=little -disable-debugging --disable-manuals --disable-scripts --disable-mibs --disable-applications

#make

 

生成的库分别在编译目录下snmplib/.libs目录、agent/.libs目录和agent/helpers/.libs目录。

注意:有些人就会问,我是如此配置的,但在执行配置时或编译时,就是通不过,报有关“crypto”或“z”的出错。这是因为snmpv3用到加密处理,而交叉编译工具中没有此库。下面说下如何添加此两个库:

 

A添加zlib

http://zlib.net获取最新有版本库,配置zlib,执行./configure,修改生成的Makefile,将里面的gccranlibar改为你所用的交叉编译器的xxx-gccxxx-ranlibxxx-ar,执行make,一般都没错(除非你所用的交叉编译工具gcc版本太低,如果是这样,就要找个合适的zlib版本,否则改它的原码是件痛苦的事件,而又要确保它的正确性),那好,编译完后,将生成的库(libz.alibz.so*)和头(zlib.hzconf.h)分别copy到交叉编译器所在的环境下的库(/*/lib)目录和头(/*/include)目录下。

 

. 添加ssl

htttp://www.openssl.org获取适合的版本ssl库(最好是openssl-0.9.7h或更高的版本)。配置ssl,有些版本里面的configure是没有加target选项的,那就得在执行./config后,修改里面的Makefile,将里面的gccranlibar改为你所用的交叉编译工具。然后编译ssl,将ssl的头目录(include/openssl)和生成的libcrypto.* libssl.*分别复制到交叉编译器所在的环境下的头(/*/include)目录和库(/*/lib)目录下。

 

@3.       添加代理用户(v1v2c团体名和v3用户)

 

方法好多。可以通加在系/etc/snmpd.conf文件里添加自己所需的团体或v3用户,比如,要想添加一个v1v2c的可读写的团体rwtyy,可以在/etc/snmpd.conf文件里加一行rwcommunit rwtyy;如果想加一个v1v2c的只读团体rotyy,可以在/etc/snmpd.conf文件里加一行rocommunity rotyy;对于v3代理用户,可以通过net-snmp-config工具来生成,也可直接在/etc/snmpd.conf文件添加。其中agent/mibgroup/examples/ucdDemoPublic.conf文件介绍更多更好更详细的配置方法,大家可以读取此文件,比如介绍了限制IP访问的设置mib-view访问的设置等等。

 

@4.       添加自己所需的MIBs

 

在配置net-snmp时,软件包就加了一些默认的mibs进来了,她们的.C.H文件都存放在agent/mibgroup目录下。那么,怎么样来添加大家所需的自定义的MIB文件呢?方法好多,比如又回到初始状态,通过有关配置命令来增加。但此方法不是好方法,个人觉得如此方法太烦人,每当想要添加一个自定义的MIB,又得重新配置一次。下面将讲解本人添加自定义的MIB的方法。

 

一:将自己的MIB文件的.C.H文件copyagent/mibgroup/YourDefinedPath目录下。因为所有的MIB文件都放在此目录下,文件生成libnetsnmpmib.a库。

 

二:将自己所定义的MIB的初始化函数注册到agent/mibgroup/mib_module_inits.h文件中来,因为snmpd启动时会先初始化这样注册函数,具体可以从代码agent/snmpd.c文件的main函数查下去。一般用mib2c生成的mib的注册函数形式都是init_****void),函数都要调用REGISTER_MIB()函数来注册大家相关的东东。说到此处,如果大家不需要系统那些自带的MIB,可以在此文件把相关的注册函数屏闭,可减少可执行文件的大小。同时大家要将自义的MIB.H头文件增加到agent/mibgroup/mib_module_includes.h文件里,这只要是系统编译链接的问题。比如你的MIB.C文件为agent/mibgroup/YourDefinedPath/yourMIB.c.H文件为agent/mibgroup/YourDefinedPath/yourMIB.h,则在agent/mibgroup/mib_module_includes.h文件里添加一行“#include "mibgroup/ YourDefinedPath/yourMIB.h””即可。

 

三:MIB文件是加进来了,但还得改下有关Makefile,让添加进来的MIB也编译进去libnetsnmpmib.a。这要改两个文件,一个是agent/Makefile文件,另一个是agent/mibgroup/Makefile文件。先打开agent/Makefile文件,找到“LMIBOBJS =”这一行,仿照已有东东,在后面加上自己的东东“ mibgroup/YourDefinedPath/yourMIB.lo”,注意不要漏了空格。还要找到“MIBOBJS =”这一行,在其后加上自己的东东“mibgroup/YourDefinedPath/yourMIB.o”。最后打开agent/mibgroup/Makefile,找到“OBJS =”这一行的最后面添加你自己的东东“ YourDefinedPath/yourMIB.o”,在“LOBJS =”这一行的最后面添加你的东东“ YourDefinedPath/yourMIB.lo”,并在“SRCS =”此行的最后面添加你的东东“ YourDefinedPath/yourMIB.c”。这样,编译链接的东东也搞完了。

 

四:好多人都以为做了以上三步并认为代码没错就一定可以编译得过去了,并不然。因为net-snmp的开源软件的Makefile做得好严紧,每次编译时,Makefile都得查下你在命令行配置生成的文件有没有改变,如有改变,则会恢复回你命令行配置的makefile状态,如果这样,大家在第三步做工作不是白搭了?呵呵,那么大家就要找到这个文件,将大家修改的Makefile不让其恢复到配置时的状态。这个文件是config.status,只要将此文件的内容全部清空就没问题了。

 

这样,执行#make就可以将大家所加进的MIB也编译进来了。

 

@创建自定义的MIBs

 

方法有好多。可以仿照agent/mibgroup目录下的.C文件来编写,也可以通过相应的工具来生成现稍微修改。比如net-snmp软件包的mib2c工具。如果是通过手写的MIB,这样花费的时间比工具生成的多得多。下面介绍mib2cmib的简单方法。

 

一:将自己写好的mib文件(如yourmib.MIB,最好检查没有语法错误和警告,否则用mib2c生成的mib.C文件就不全了,可通过SNMPC工具检查)放进自己PC机上安装net-snmp的路径下的snmp/mibs目录下。

 

二:在命令行执行下以命令

#export  MIBS=all

就会将安装net-snmp的路径下的snmp/mibs目录的所有mibs文件包含进来了。

 

三:在命令行执行以下命令,就会在当前目录下生成你所需的MIB.C.H文件了。

#mib2c mib2c.old-api.conf  YourOwnerMib

至于大家想生成什么风格的MIB.C文件,可读取安装net-snmp的路径下的snmp目录下的*.conf文件。

 

最后说下一些朋友在使用mib2c工具时出现的问题。有些朋友在PC安装了net-snmp,也按照上面的三个步骤来生成自己的MIB,但在第三步时总是出错,不是说没有找到自己的YourOwnerMib,就是说perl有异常等等一系列问题。这些问题都是在安装net-snmp时,执行的配置做得不好所导致,所以在PC上安装net-snmp时,记得在配置时加上—enable-embedded-perl —with-perl-modules选项,最好配置安装路径为/usr,即加上—prefix=/usr。同时要查看下~/.bash_profile文件,看下/usr/bin/usr/sbin的路径是否加了进来。

 

分享到:
评论

相关推荐

    net-snmp agent开发详解-

    文件"net-snmp agent开发详解---从代理模式.docx"很可能是详细教程文档,涵盖了上述所有步骤,包括可能遇到的问题和解决策略。对于想要深入理解Net-SNMP代理开发和MIB扩展的读者,这是一个宝贵的资源。通过阅读和...

    net-snmp开始教程

    Net-SNMP 是一个开源的基于 SNMP(Simple Network Management Protocol,简单网络管理协议)的开发库,允许开发者创建自己的 SNMP 应用程序。本文将详细介绍 Net-SNMP 的开发过程、开发环境配置和相关工具的使用。 ...

    net-snmp-5.9.4

    五、net-snmp-5.9.4社区与开发 net-snmp项目拥有活跃的社区,用户可以在其官方论坛、邮件列表和GitHub仓库中寻求帮助、参与讨论或贡献代码。项目的持续更新和维护确保了net-snmp-5.9.4能够适应不断发展的网络环境和...

    net-snmp源码包,学习开发

    这个源码包,net-snmp-5.9.1.tar.gz,是一个可移植的版本,特别适合开发学习,让开发者能够深入了解SNMP的工作原理以及如何利用它来管理和监控网络设备。 一、SNMP基础 SNMP是Internet标准协议,用于管理网络设备,...

    net-snmp 5.7.2

    SNMP(简单网络管理协议)是网络管理员用来监控和管理网络设备的重要工具,而net-snmp是一个广泛使用的开源SNMP软件开发包。net-snmp 5.7.2版本为Linux环境提供了强大的功能和灵活性,使得开发者能够轻松地构建SNMP...

    net-snmp.x64 last stable.zip

    它包含了net-snmp的安装程序net-snmp-5.5.0-2.x64.exe和一份ReadMe.txt说明文件。在安装前,务必确保你的系统是64位的,以确保软件正常运行。 安装过程中,用户可以选择自定义安装路径。如果选择非默认路径,需要...

    net-snmp-5.8.tar.gz

    《深入理解net-snmp:基于net-snmp-5.8.tar.gz的插件解析与应用》 Net-SNMP(网络简单网络管理协议)是一个开源的网络管理软件套件,它实现了SNMP(简单网络管理协议)的标准。Net-SNMP项目提供了用于管理网络设备...

    net-snmp使用说明

    SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (8137) 0:01:21.37 ... 这些信息包括了系统描述、对象标识、系统uptime 等信息。 在 ...

    net-snmp-5.5.0-2.x64

    在net-snmp-5.5.0-2.x64中,除了命令行工具外,还包括C语言编写的库函数,开发者可以利用这些库来开发自己的SNMP应用程序,实现更高级的网络管理功能。此外,官方提供的文档和源代码让学习和定制net-snmp变得更为...

    net-snmp开发详解

    《net-snmp开发详解》 net-snmp是一个广泛使用的网络管理软件套件,它提供了SNMP(简单网络管理协议)的实现,包括一个代理、一个命令行接口和库,允许开发者构建自己的SNMP应用程序。本文将详细介绍如何移植...

    net-snmp-5.7.3.tar.gz

    5. **安全增强**:SNMPv3引入了认证和加密机制,net-snmp-5.7.3支持这些特性,增强了网络管理的安全性。 二、安装流程 1. **解压源码包**:首先,你需要将`net-snmp-5.7.3.tar.gz`文件解压到一个合适的目录,使用`...

    windows下编译使用Net-SNMP

    - **x86 exe 版本**:如果仅需要安装而无需编译,可以选择下载预编译的 x86 exe 版本,如 net-snmp-5.5.0-1.x86.exe。 #### 二、Windows 环境配置 ##### 2.1 编译环境选择 Net-SNMP 支持在多种 Windows 编译环境中...

    net-snmp.zip

    net-snmp-5.5-49.el6_5.3.x86_64.rpm net-snmp-devel-5.5-49.el6_5.3.i686.rpm net-snmp-devel-5.5-49.el6_5.3.x86_64.rpm net-snmp-libs-5.5-49.el6_5.3.i686.rpm net-snmp-libs-5.5-49.el6_5.3.x86_64.rpm ...

    NET-SNMP 5.6 安装包

    首先,让我们来看看"net-snmp-5.6.1.1-1.x86.exe"这个文件。这是一款针对x86架构的Windows系统的可执行安装程序,用于在Windows平台上部署NET-SNMP 5.6.1.1版本。在运行这个文件之前,确保你的系统满足以下基本要求...

    net-snmp-5.4.3

    通过实际操作,例如设置SNMP代理,使用命令行工具查询设备信息,或者编写简单的SNMP应用程序,可以加深对SNMP的理解和应用。同时,配合MIB查看器,可以更有效地管理和维护网络设备。 总的来说,Net-SNMP-5.4.3是一...

    net-snmp-5.7.2.tar.gz

    《深入理解net-snmp-5.7.2在Cacti安装中的应用》 网络监控是IT运维工作的重要环节,而Cacti作为一款广泛使用的开源网络监控工具,其依赖于net-snmp库来实现对网络设备的SNMP(简单网络管理协议)通信。本文将详述...

    net-snmp-5.5x64x86.zip

    首先,"net-snmp-5.5x64x86.zip"这个压缩包包含了两个版本的net-snmp工具,分别是"net-snmp-5.5.0-2.x64.exe"和"net-snmp-5.5.0-1.x86.exe",分别适用于64位和32位的Windows系统。这意味着无论你的Windows环境是32位...

    net-snmp-5.4.1.zip_ net-snmp-5.4.1_net snmp 5.4.1_net-snmp .tar.

    本文将深入探讨Net-SNMP 5.4.1版本,包括其核心特性、应用开发和实际操作中的关键知识点。 1. Net-SNMP概述 Net-SNMP项目始于1990年,旨在提供一个全面的SNMP软件套件,包括代理、命令行工具、库和MIB编译器。...

    qt-net-snmp-master.zip_SNMP_qt snmp++_qt-net-snmp_qt35147_snmp Q

    net-snmp-5.7.3 linux windows macqt-net-snmp library is a C++/Qt abstraction layer over Net-SNMP API that provides a basic support to SNMPv1/2 requests.

    net-snmp软件包的应用

    然而,熟练掌握NET-SNMP的开发和应用,需要深入理解SNMP协议的原理、MIB的结构以及NET-SNMP提供的API和工具链。随着网络环境的日益复杂,NET-SNMP的重要性只会愈发凸显,成为网络管理领域不可或缺的一环。

Global site tag (gtag.js) - Google Analytics