【原】net-snmp学习笔记<二> — 移植

 
net-snmp到Powerpc平台的移植
 

准备工作

1、net-snmp5.7.1源码

2、Linux编译环境,IP地址192.168.2.115

3、Powerpc平台,本次移植到飞思卡尔,IP地址192.168.2.20

 

环境搭建步骤

1、主机-Powerpc:

主机和Powerpc互相ping,检测网口连通性;

如果网口无法工作,使用串口的zmodem进行文件下载,但是此方法较慢;

 

2、下载文件方法:

windows平台

开启tftpd.exe,配置服务器工作路径为文件所在目录;

通过串口或者网口与Powerpc通信,在Powerpcshell下运行:

tftp -r [download_file] 192.168.2.115 –g

SecureCRT使用zmodem传送文件,此方法比tftp方法速度慢。

Linux系统需要tftp服务器或者nfs服务器支持

 

移植net-snmp

1、配置

CC=/usr/freescale-2010.09/bin/powerpc-linux-gnu-gcc./configure--build=i386-linux --host=ppc-linux --disable-ipv6--with-endianness=big--disable-manuals--disable-ucd-snmp-compatibility--enable-as-needed--disable-embedded-perl --without-perl-modules--disable-snmptrap-subagent--disable-scripts--with-mib-modules="ucd_snmp" --enable-shared

修改项包括:平台相关交叉编译链,host取值,字节序(Powerpc属大端字节序),其他配置不变

 

2、编译

本工程因为需要加载动态库,因此须使用动态编译

动态编译:

#make

编译时不需要重新指定安装目录,一律选择默认

//若有动态库,会提示错误:缺少库,拷贝过去即可。编译完成后大小41K左右

静态编译:

#makeLDFLAGS=”-static”

//使用-static选项指明是静态编译,安装完成后大小1.6M左右

 

3、安装

#make install

编译完snmp后,在安装阶段会链接目标文件生成库文件,并将库文件默认安装在本地/usr/local/lib和 /usr/lib下

 

4、压缩文件

安装完成后snmpd路径:/usr/local/sbin/snmpd

@Powerpc-linux-stripsnmpd

静态:会将1.6M的文件压缩为649K

动态:只有46K

 

拷贝文件

1、SNMPD的拷贝

将压缩后的snmpd拷贝至/usr/sbin目录下,修改权限为755;

 

2、配置文件的拷贝

将编译环境的/etc/snmp目录下snmpd.conf snmp.conf 这两个文件拷贝至:Powerpc板的/usr/local/share/snmp目录下;

 

3、MIB库文件的拷贝

将MIB库文件拷贝至Powerpc板/usr/local/share/snmp/mibs中:

拷贝SNMP系统MIB库和我们自己开发的MIB库到目标板 的/usr/local/share/snmp/mibs;

cp ./mib  <目标板>/usr/local/share/snmp/mibs;



cp SGCC-MIB.my  <目标板>/usr/local/share/snmp/mibs;

这样,我们自己开发的MIB库SGCC-MIB和snmp自带的MIB库就整合在一起了。

 

4、命令的拷贝

通过tftp或者nfs挂载方式,拷贝本地snmp相关命令到Powerpc板:

#这里是snmp相关操作方法

cd/usr/local/bin/                



cp agentxtrapnet-snmp-c* snmp* encode_keychange /usr/bin/



# snmp的守护线程和trap监听命令权限更改为755。



cp/usr/local/sbin/snmp*/usr/sbin/     



[注]路径不定,只要在需要时将命令所在路径导入PATH即可



使用命令测试:



@snmpget–v2c –cprivate 127.0.0.1 sysUpTime.0 #返回正确

5、运行库的拷贝

通过tftp或者nfs挂载方式,拷贝本地snmp相关库文件到目标板,用以支持项目运行:

Cp usr/lib/libnetsnmp* /usr/lib

Cp usr/local/lib/libnetsnmp* /usr/lib

将需要snmp支持的第三方库——我们的arm网管程序编译而成的库文件,拷贝/usr/local/lib;

这样,我们的网管程序就可得到SNMP的支持

[注]路径不定,只要在需要时将库文件所在路径导入LD_LIBRARY_PATH即可

 

6、建立自己的网管程序和SNMP之间的关系

编辑/usr/local/share/snmp/snmp.conf,增加如下一行:



mibs +XXX-MIB;#这是自己建立的网管程序生成的MIB库文件



编辑/etc/snmp/snmpd.conf文件141行,将源地址修改为trap的发送目标IP地址,端口不变;193行,使用dlmod命令,加载动态链接库文件,该库文件指向我们的网管程序入口libXXX.so,如下,dlmodsgcc/usr/local/lib/libXXX.so。启动snmp时,会自动加载该库,从而运行网管程序。

7、启动snmpd服务

#snmpd–f –Le –d



#snmpd–f –Lo –d&



#snmpd-Lsd



如果因路径问题造成第三方库无法找到或者打开,可通过导入库文件路径的方式,写入脚本文件,在启动系统的时候自动导入路径。



exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib



其他启动方式



#snmpd–f –Le –d log to 标准出错



#snmpd–f –Lo –d log to 标准输出



#snmpd–Lsd直接后台启动



#snmpd-f -Le -Dread_config可以使用此命令来查看日志文件信息

 

8、测试

@snmptranslate–Tp –IR sgcc



snmpget–v2c –c private localhost armip.0



SNMPv3补充:



由于每次断电再上电后,SNMP的/var/net-snmp/snmpd.conf文件会重新初始化,丢失上次创建的v3用户信息,为了每次上电后不需要再重新配置,使用以下方法:



移植完snmp后,在/usr/local/share/snmp/目录下建立snmpv3.txt文件,在文件中输入创建v3的用户名和密码,并保存。



createUsermifi SHA “authpassword” AESprivpassword(跟MIBBrowser设置保持一致)



在etc/init.d/rcS中snmp启动脚本前加入:



snmpd



killall-9 snmpd



cat/usr/local/share/snmp/snmpv3.txt >>/var/net-snmp/snmpd.conf

【完】
关于SNMP的介绍,如果感兴趣,请看本博客:http://www.cnblogs.com/iTsihang/archive/2013/05/30/3109347.html

你可能感兴趣的:(snmp)