近来接到了一个写snmp的任务,此前对snmp完全没有概念,当然现在也基本没有概念,百度,谷歌,bing等等各种搜索教程,终于有点突破,那么就先从最最基本的开始吧。
首先就是net-snmp的安装了:
我的环境是:
OS:linux
Arm-linux-gcc:4.1.2
Net-snmp:v5.3.2
硬件:Target CPU:arm 9
目前个人并没有感觉到版本对操作的影响,下面就是尝试若干次后成功的过程,以供自己后期回忆:
1.有了net-snmp-5.3.2的源码包后就开始安装:
#./configure && make && make install
这里./configure配置的时候都选择为默认配置,当然也可以--prefix=指定安装路径等。需要等待一段时间,等安装完成后不要着急的make clean && make distclean,因为里面的东西也有要使用的。配置过程中会产生一些文件夹,具体解释如下图(来自网络)
2.在/usr/local/share/snmp/目录下,需要两个文件snmp.conf和snmpd.conf 配置文件,将源码目录下的EXAMPLE.cof拷贝到/usr/local/share/snmp/下改名为snmpd.conf
~#cp ../net-snmp-5.3.2/EXAMPLE.conf /usr/local/share/snmp/snmpd.conf
关于snmp.conf可以自己创建,先可以不写内容
~#vim snmp.conf
当然也可以通过snmpconf来创建,但是好复杂,初学习就先用简单的方法,复杂的方法以后再学习。
3.接下来就需要定义自己的私有MIB库了,官网上可以直接找NET-SNMP-TUTORIAL-MIB.txt 下载下来,或者已经有了现成的例子也可以直接使用,将已经有的MIB放到/usr/local/share/snmp/mibs/目录下
~# cp NET-SNMP-TUTORAIL-MIB.txt /usr/local/share/snmp/mibs/
4.配置snmp.conf文件,加入自己的MIB库,语法为 MIBS +NET-SNMP-TUTORIAL-MIB.txt,snmp.conf文件是于mib库相关联的配置文件,没有的话mib2c无法运行
5.安装perl工具,也就是上面第四条提到的mib2c等等,是为了帮助开发人员开发的一些方便工具,当然可能也不是很方便。
进入源码目录如下操作:
~#perl Makefile.PL && make && make test && make install
等待安装完成,基本无什么错误,下面就可以使用mib2c工具了
6.用mib2c生成自己要使用的.c和.h文件(在这里卡住了好久)
首先要运行一条 ~# export MIBS+ALL 确保能够找到相关的库,否则会提示 can't find *****,或者直接加入到/etc/profile配置文件里去。
其次运行mib2c ~# mib2c ***(这里的*** 一定要注意,不能是NET-SNMP-TUTORIAL-MIB,开始的时候就这样卡了好几个小时,可以打开NET-SNMP-TUTORIAL.txt看一下里面的内容,
然后输入~#mib2c ***,之后就可以开始选择,选择完成后就会出现.c和.h了)
7.修改.c和.h,添加自己的功能代码
8.把修改好的代码放到源码目录的../net-snmp-5.3.2/agent/mibgroup/目录下。(好像也可以自己mkdir,后续继续研究)
9.重新编译源码了,编译的时候加入自己的MIB库,语法为如下图
注意:此为交叉编译, MyMib 为自己定义的mib库名(即mib文件的BEGIN前的名字),不是mib文件名
Sudo make LDFLAGS=”-all-static”
以上采用的为静态编译。
后面的未完待续。。。