NET-SNMP-5.8
安装依赖和编译源码
configure过程中会有一些交互信息,选择默认即可
sudo apt install libperl-dev
./configure
make
sudo make install
MIB开发
MIB开发其实就三个部分
- 创建一个MIB文件
- 使用mib2c工具将MIB文件转化为C语言代码
- 将转化的C语言代码中添加具体的业务实现,加载MIB实现
1.创建MIB文件
2.转化MIB文件为C语言代码
系统默认的各类框架代码的配置文件在/usr/local/share/snmp目录下,一般不需要对框架类的配置文件做修改,有需求再了解。
- mib2c.scalar.conf:适用于所有的标量对象;
- mib2c.iterate.conf:适用于对象的实例值需要某种迭代、反复查询的操作,该配置文件生成的代码使用的API对GET和GETNEXT请求效率较高。该代码框架的API核心函数中使用了大量的case处理get和set请求,代码不太美观;
- mib2c.old-api.conf:能够同时处理标量和表格的配置文件,代码紧凑、直观。比较常用;(统一使用这个模板)
- mib2c.notify.conf:生成通告消息相关的模板代码;
1.将MIB文件拷贝到SNMP的mibs目录,通常为 /usr/local/share/snmp/mibs
2.使用mib2c转化代码
mib2c -c mib2c.scalar.conf TEST2-MIB::node0 //生成scalar框架代码
mib2c -c mib2c.iterate.conf TEST2-MIB::node0 //生成iterate框架代码
mib2c -c mib2c.old-api.conf TEST2-MIB::node0 //生成old-api框架代码
3.添加具体的业务实现和加载
静态编 译
1.将第2步生成的文件node0.c node0.h 拷贝到源码目录下agent/mibgroup目录下
2.配置编译参数 ./configure --prefix=/home/luke/tools/snmp --with-mib-modules=node0
3.make & make install
cp ../node* agent/mibgroup
./configure --prefix=/home/luke/tools/snmp --with-mib-modules=node0
make
sudo make install
动态加载
Makefile
CC=gcc
FLAGS=-I. `net-snmp-config --cflags` -g
DLFLAGS=-shared -fPIC -g
node0.so: node0.c
$(CC) $(CFLAGS) $(DLFLAGS) -c -o node0.o node0.c
$(CC) $(CFLAGS) $(DLFLAGS) -o node0.so node0.o
.PHONY : clean
clean :
rm -f *.so *.o
修改snmpd.conf配置文件,在文件末尾加入
dlmod Test ${Test.so所在绝对路径}/Test.so
启动snmpd,
/usr/local/snmpd -f -L -DTest,dlmod -c /usr/local/snmp/etc/snmpd.conf
动态加载完成
子代理扩展
//生成Test程序:
net-snmp-config --compile-subagent Test Test.c
//启动snmpd,Test
/usr/local/snmpd -c /usr/local/snmp/etc/snmpd.conf
./Test
完成
其他
有时间再完成