`
fp_moon
  • 浏览: 971032 次
  • 性别: 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开发详解

    移植net-snmp和应用net-snmp开发流程详解。适合于初学者

    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-v5.8-el7.zip

    yum install -y perl-devel perl-ExtUtils-Embed elfutils-devel elfutils-libelf-devel lm_sensors-devel rpm-devel perl-Tk perl-Mail-Sender perl-JSON perl-IO-Socket-SSL perl-Net-SSLeay perl-IO-Socket-IP ...

    net-snmp源码包,学习开发

    net-snmp-5.9.1.tar.gz,可移植,开发学习

    SNMP安装包-net-snmp-utils-5.7.2-49.el7_9.2.x86_64

    SNMP安装包-net-snmp-utils-5.7.2-49.el7_9.2.x86_64

    NETSNMP程序补丁包net-snmp-devel

    net-snmp所需的安装补丁包,NETSNMP程序补丁包net-snmp-devel-5.3.2.2-14.el5.x86_64.rpm

    net-snmp-5.7.0-1.x86.exe 客户端windows

    net-snmp-5.7.0-1.x86.exe 客户端windows。

    net-snmp-5.4.3

    net-snmp-5.4.3是Linux环境下的snmp软件,想学习net-snmp内容,必须的软件之一。我的资源中还用MIB查看软件,欢迎下载使用

    net-snmp-5.9.1.zip

    net-snmp源码5.9.1

    net-snmp使用说明

    NET-SNMP工具的使用 当环境设置好后,运行snmpd,即snmp代理进程,就可以使用管理工具查询其中的信息了。

    net-snmp-5.5.0-2.x64.EXE

    windows 7 x64下面的 net-snmp 安装包。可以再命令行下使用snmp命令。

    net-snmp agent开发详解-

    扩展一个子代理,让SNMPD以主代理的模式运行,对于SNMPD我们只要让它启动就可以,不需要任何的更改和配置,把子代理编译生成的程序运行起来就可以扩展自定义的MIB库

    net-snmp.x64 last stable.zip

    windows x64下面的 net-snmp 安装包。可以再命令行下使用snmp命令。 如果安装在自定义的位置,需要将路径添加到系统环境变量Path中

    netsnmp程序补丁包net-snmp-utils-5.3.2.2-14.el5.x86_64.rpm

    netsnmp程序补丁包net-snmp-utils-5.3.2.2-14.el5.x86_64.rpm

    net-snmp-5.7.3.tar.gz

    net-snmp-5.7.3的tar包(源码包),可直接编译安装(内附安装说明),同时内附gcc编译工具的rpm包,执行里边的install.sh即可安装

    net-snmp-x86_64组包

    net-snmp-x86_64组包,包含net-snmp-5.3.2.2-20.el5.x86_64.rpm net-snmp-libs-5.3.2.2-20.el5.x86_64.rpm net-snmp-perl-5.3.2.2-20.el5.x86_64.rpm net-snmp-utils-5.3.2.2-20.el5.x86_64.rpm

    net-snmp-5.7.2-37.el7.x86_64.rpm

    lm_sensors-libs-3.1.1-17.el6.x86_64.rpm。net-snmp-5.7.2-37.el7.x86_64.rpm,net-snmp-agent-libs-5.7.2-37.el7.x86_64.rpm,net-snmp-libs-5.7.2-37.el7.x86_64.rpm,net-snmp-utils-5.7.2-37.el7.x86_64.rpm

    net-snmp-5.7.2.tar.gz

    cacti安装所需安装包之一 net-snmp-5.7.2.tar.gz

    net-snmp-5.4.0-1.win32.exe

    net-snmp-5.4.0-1.win32.exe应用平台windows

    Net-SNMP代理开发实例程序

    这个是本人由于公司需要扩展Net-SNMP的Agent而写的一个开发流程文档,压缩包中也包含程序的源代码,和配置文件。根据Net-SNMP官方的实例程序,详细介绍了SNMP代理开发的各个步骤,各位读者按照步骤可以轻松的完成一...

Global site tag (gtag.js) - Google Analytics