当前位置: 首页 > 工具软件 > Net-C > 使用案例 >

为net-snmp添加新的节点.c,添加私有节点

孙泳
2023-12-01

Net-snmp安装开发流程:

Net-snmp安装开发流程_cao849861802的博客-CSDN博客
mib文件构建,标量,一维表量,二维表量:

mib文件构建,标量,一维表量,二维表量_cao849861802的博客-CSDN博客
Mib2c构建.C和.H文件,标量,一维表量,二维表量,表量索引:

Mib2c构建.C和.H文件,标量,一维表量,二维表量,表量索引_cao849861802的博客-CSDN博客
修改mib2c生成的.c文件:

修改mib2c生成的.c文件_cao849861802的博客-CSDN博客
为net-snmp添加新的节点.c,添加私有节点:

为net-snmp添加新的节点.c,添加私有节点_cao849861802的博客-CSDN博客

------------------------------------------------------------------------------------------------

将修改好的mib.c文件添加到net-snmp有三种方式:

  1. 直接将文件导入到snmp的源码中直接编译进去;
  2. 使用so文件动态链接到snmplib;
  3. 编译为新的可执行软件一起运行snmpd和新的软件;

这里我只做了2,3

2的话我尝试添加其他软件的lib库的时候添加一直添加不上,所以这里只说怎么用,如果不添加其他的lib库的话,这样还是可以的,如果添加的话建议使用3的方式;

方法2:

创建Makefile如下:

CC=gcc
CFLAGS := -I ../../../include/

LIBADMINTARGET = adminCard.so
LIBADMINSOURCE:= ./adminCard.c

admin:$(LIBADMINTARGET)
$(LIBADMINTARGET):
	$(CC) $(CFLAGS) -fpic -shared -o $(LIBADMINTARGET) $(LIBADMINSOURCE)

all:admin 
.PHONY : clean
clean :
	rm -f *.so *.o

这个makefile放在生成的.c的路径下,上面的include指的就是net-snmp的指定的安装路径下的include;

然后make all就可以生成.so文件了

修改snmpd.conf这个文件的最后添加内容如下:

dlmod adminCard /media/build/net-snmp/net-snmp/share/snmp/mibs/adminCard.so

保存退出

重新启动snmpd:

snmpd -DadminCard,dlmod -c  etc/snmpd.conf &

这样就挂载上了。

采用snmpget就可以访问了,

snmpget格式:

snmpget -v2c -c public  127.0.0.1  1.3.6.1.4.1.1314.10001.1.0
snmpget -v2c -c public  127.0.0.1  1.3.6.1.4.1.1314.10002.1.2.1(一维表)
snmpget -v2c -c public  127.0.0.1   1.3.6.1.4.1.1314.10003.1.3.1.1(二维表)

snmpset格式:

snmpset -v2c -c public  127.0.0.1  1.3.6.1.4.1.1314.10001.1.0 s  aaa

这里的s指的格式字符串,其他的可以看help

方法3:

直接使用命令如下:

net-snmp-config --compile-subagent snmpapp --ldflags -lxxx *.c

这里的*.c就是我们要编译的c文件。

-lxxx就是我们可以在这里链接动态库

如果看不到库可以使用如下命令:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/media/build/net-snmp/net-snmp/lib

把动态库的路径标识出来;

这注意每次编译要把之前生成的snmpapp删除再编译新的app。

运行snmpapp

./snmpapp -Dswitch -f &

这里的 –D是打开调试开关:DEBUGMSGTL,方便我们调试用的,如果在代码中想修改打印,可以直接添加DEBUGMSGTL,不要使用prinf,我这边好像是无法打印的。


 

 类似资料: