Advertisement

研究snmp移植

阅读量:

没错又又有移植的新需求了,做个记录,想想以前那么多年也没做啥记录,最近都给他记录上,也算是集各家之所长做个资料整理了。

1.snmp版本net-snmp-5.9.3,官网下载:Net-SNMP

2.编译configure :./configure --host=arm-linux --with-cc=arm-linux-gnueabihf-gcc --with-endianness=little --disable-embedded-perl --disable-shared --prefix=/home/user/snmp/

其中--disable-embedded-perl,--disable-shared,没有会报错,具体没有深入研究可能跟哪个库相关;配置选项说明如下:

复制代码
 –host=arm-linux    平台

    
 –target=arm-linux    目标平台
    
 –build=i686-linux    编译平台
    
 –with-cc=arm-linux-gcc    交叉编译工具
    
 –with-ar=arm-linux-ar    使用的打包工具
    
 –prefix=/usr/local/net-snmp    安装目录
    
 –disable-shared    不编译共享库
    
 –disable-scripts    不要安装mib2c等脚本
    
 –with-endianness=little    指定小端模式
    
 -enable-mini-agent    最小化构建agent
    
 --disable-deprecated    不编译弃用的功能
    
 --without-logfile    指定snmpd不输出日志文件(可以使用--with-logfile指定默认日志文件位置)
    
 --disable-minimalist    删除所有非基本的代码功能
    
 –enable-debugging    打开调试信息
    
 --disable-testing-code    不使用测试代码(某些代码不被使用)
    
 –with-openssl=/opt/hardhat    openssl库路径(用于支持加密等)
    
 –disable-ipv6    不使用IPv6
    
 –disable-manuals    不安装manpage说明页
    
 –disable-ucd-snmp-compatibility    不需要兼容ucd-snmp
    
 –disable-snmptrapd-subagent    不用支持snmptrapd的子代理
    
 –disable-embedded-perl    在SNMP代理和snmptrapd禁用嵌入式Perl。默认启用
    
 –disable-applications    是否关闭snmpget等功能,根据自己的需要选择
    
 --with-default-snmp-version="3"    指定默认协议版本
    
 --enable-as-needed    仅链接需要库,不链接不必要的库(如果只使用其他方法行不通,链接libperl针对应用而非Net-SNMP库。)
    
    
    
    
    cpp
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-17/ZXePjGK5OrTICiwvN0tzRy7chdJf.png)

3.编译make: make LDFLAGS="-static" ,暂时没有尝试非静态编译会不会移植有问题;

4.编译make install: 路径为--prefix=/home/user/snmp/的路径,东西都在这个下面;

5 配置文件snmp.conf的修改:

先将示例的配置文件拷贝到安装目录下:

cp EXAMPLE.conf /share/snmp/snmpd.conf

修改1:打开对外udp:161端口

Listen for connections from the local system only

#agentAddress udp:127.0.0.1:161 #注释掉

Listen for connections on all interfaces (both IPv4 and IPv6)

#agentAddress udp:161,udp6:[::1]:161
agentAddress udp:161 #添加

修改2:选择SNMP协议版本

ACTIVE MONITORING

send SNMPv1 traps

#trapsink localhost public

send SNMPv2c traps

trap2sink localhost public

send SNMPv2c INFORMs

#informsink localhost public

修改3:设置访问权限

ACCESS CONTROL

system + hrSystem groups only

view systemonly included .1.3.6.1.2.1.1
view systemonly included .1.3.6.1.2.1.25.1

Full access from the local host

#rocommunity public localhost

Default access to basic system info

rocommunity public default -V systemonly

rocommunity public default

6.移植:

将share下的mibs库、snmpd.conf、/sbin/下的snmpd移植到板子下,snmpd:

./snmpd -c share/snmp/snmpd.conf -f -Le -d -M share/snmp/mibs/

配置说明如下:

复制代码
 注:snmpd命令的有用选项

    
 -c FILE 指定文件为配置文件
    
 -C 不读取默认的配置文件
    
 -d dump接收和发送SNMP数据包
    
 -D TOKEN 对于给定的TOKEN(标志)打开调试信息 ( -Dmib_init)
    
 -I [-]INITLIST 对于要初始化的MIB列表显示
    
 -M DIRLIST 指定MIB库的路径
    
 -V 显示详细信息
    
 -Le 把错误信息输出到日志中
    
 -Lf FILE 把错误信息输出到指定文件中
    
 -m MIBLIST use MIBLIST instead of the default MIB list
    
 -f                    do not fork from the shell
    
    
    
    
    cpp
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-17/1Aam9bFEl0Jt5DkqIdg4ri3WOecy.png)

可见基本功能正常LOG如下:

7.安装 SNMP客户端工具MIB Browser

官方下载地址:http://www.ireasoning.com/download.shtml

选择板子IP为192.168.0.140如下:(该软件还不是很会用,后续补充)

点击get可以在板子获得响应:

8.总结

至此snmp基本功能调通,后续还有大量移植工作需要完成,最关键的是源码移植,后续再进行补充。

全部评论 (0)

还没有任何评论哟~