net-snmp配置总结

xiaoxiao2025-07-27  25

一、目的 本配置的目的是演示snmp的应用,在arm板上运行snmpd进程,通过电脑能查询arm板运行状态。 所以需要交叉编译工具,编译成arm版本snmp组件。

二、交叉编译 使用的snmp版本是net-snmp-5.7.3, 编译之后会得到snmpd服务,还有snmpwalk、snmpget等工具。 交叉编译的关键点设置交叉编译工具,去掉不需要的模拟,比如perl, 以及设置要加载的扩展MIB等。直接给出我使用的configure脚本:

./configure --build=i686-linux --host=arm-linux CC=arm-linux-gcc --with-endianness=little –enable-mini-agent –disable-embedded-perl –with-default-snmp-version=“3” –with-logfile=/home/xxx/source/arminstall/snmpd.log –with-persistent-directory=/home/xxx/source/arminstall/var –with-install-prefix=/home/xxx/source/arminstall –with-ar=arm-linux-ar –without-perl-modules –with-mib-modules=Test LDFLAGS="-static"

执行完成configure, 再执行make, make install 就可以了。

三、编译自定义的MIB 参考网上的例子,一个简单的MIB Test-SLK-MIB.txt内容文件如下:

Test-SLK-MIB DEFINITIONS ::= BEGIN IMPORTS OBJECT-GROUP, MODULE-COMPLIANCE, NOTIFICATION-GROUP FROM SNMPv2-CONF enterprises, Integer32, Unsigned32, OBJECT-TYPE, MODULE-IDENTITY, NOTIFICATION-TYPE FROM SNMPv2-SMI DisplayString FROM SNMPv2-TC; Test MODULE-IDENTITY LAST-UPDATED “201601221450Z” ORGANIZATION “” CONTACT-INFO “” DESCRIPTION “Video’s Server MIB.” ::= { enterprises 745352 } Time OBJECT IDENTIFIER ::= { Test 1 } GetTime OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION “Example : 2016/1/22” ::= { Time 1 } GetNetSpeed OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION “get internet speed” ::= { Time 2 } END

MIB文件的目的是通过充当一个模板的作用,通过此模拟文件生成Test.h和Test.c文件,放到源码arm-net-snmp-5.7.3/agent/mibgroup中,编译生成自定义的agent,应答我们定义的请求。 怎么从这个txt文件生成C语言代码文件呢? 用法如下: env MIBS=”+/path/to/Test-SLK-MIB.txt” mib2c Test 其中前面部分env MIBS=”+/path/to/Test-SLK-MIB.txt” 的作用设置环境变量MIBS,它指示搜索MIBS文件的路径,也就是为了使mib2c工具在搜索路径中找到Test的名字在哪里。服务器端添加Test.c和Test.h后,是不需要这个MIB txt文件的,我的理解是服务器是直接处理OID序号的。客户端如果使用snmpget等工具请求的时候,如果使用Test等名字,也是要设置 MIBS环境变量指明MIB文件的,如果也直接使用OID号,则不需要。 使用模板生成的C语言文件还是需要添加自己的实现的,自己参考后面的参考文献即可。

四、运行snmpd和测试

首先我使用之前pc上使用过的一个snmpd.conf配置文件,主要修改是允许从其他IP访问,允许更多的访问资源,去掉udp6等, 生效的内容如下: agentAddress udp:161 view systemonly included .1 rocommunity public default -V systemonly rocommunity6 public default -V systemonly rouser authOnlyUser sysLocation Sitting on the Dock of the Bay sysContact Me me@example.org sysServices 72 proc mountd # No more than 4 ‘ntalkd’ processes - 0 is OK proc ntalkd 4 # At least one ‘sendmail’ process, but no more than 10 proc sendmail 10 1 disk / 10000 disk /var 5% includeAllDisks 10% load 12 10 5 trapsink localhost public iquerySecName internalUser rouser internalUser # generate traps on UCD error conditions defaultMonitors yes # generate traps on linkUp/Down linkUpDownNotifications yes extend test1 /bin/echo Hello, world! extend-sh test2 echo Hello, world! ; echo Hi there ; exit 35 master agentx

直接启动snmpd服务: ./snmpd -c snmpd.conf 之后运行测试工具: env MIBS="+/home/xxx/mymibs/Test-SLK-MIB.txt" ./apps/snmpget -v2c -c public 192.168.1.100 Test-SLK-MIB:GetTime.0

或者: ./apps/snmpget -v2c -c public 192.168.1.100 1.3.6.1.4.1.745352.1.1.0

测试完毕。 顺便提一些测试命令, 解析MIB文件: ./apps/snmptranslate -Tp -IR Test-SLK-MIB::Test 调试snmpd启动日志: sudo ./agent/snmpd -c snmpd.conf -f -Le -Dread_config 显示MIB搜索路径: net-snmp-config --snmpconfpath

五、参考文献

https://blog.csdn.net/liang_baikai/article/details/53423211?locationNum=1&fps=1 2.https://www.cnblogs.com/oloroso/p/4814467.html 3.http://fajun1216.blog.163.com/blog/static/207405106201262104843794/ 4.https://www.cnblogs.com/shenlinken/p/5316021.html 5.https://blog.csdn.net/liang_baikai/article/details/53423211?locationNum=1&fps=1
转载请注明原文地址: https://www.6miu.com/read-5033809.html

最新回复(0)