通过ucd-snmp完成SNMP Agent的源码(1)(3)
三:SNMP Agent功能扩展方式
SNMP Agent功能扩展即snmpd功能扩展,假定ucd-snmp源代码存放在/usr/local/src/目录下,下面是实现snmpd功能扩展的两种方式:
静态链接方式
先将生成的两个文件, modulename.h和modulename.c,拷贝到ucd-snmp源代码的/usr/local/src/ucd-snmp-4.2.1/agent/mibgroup目录,然后,在ucd-snmp 4.2.1目录下(/usr/local/src/ucd-snmp-4.2.1)执行以下命令生成snmpd。
# ./configure -with-mib-modules="modulename" # make # make install
共享链接库方式
首先, 在任一目录(如/usr/local/temp)编译生成共享链接库。将两个源文件, modulename.h和modulename.c拷贝到此目录下,执行如下命令生成共享链接库:
gcc -g -I/usr/local/include -c -o modulename.o modulename.c gcc -g -fPIC -shared -o modulename.so modulename.o
然后,通过以下任意一种方式动态加载共享链接库。
如果代理程序(snmpd)已运行,执行如下命令:
#snmpset localhost rwnode UCD-DLMOD-MIB::dlmodStatus.1 i create #snmpset localhost rwnode UCD-DLMOD-MIB::dlmodName.1 s " modulename" #snmpset localhost rwnode UCD-DLMOD-MIB::dlmodPath.1 s "/usr/local/temp/ modulename.so" #snmpset localhost rwnode UCD-DLMOD-MIB::dlmodStatus.1 i load
这样即可加载刚才生成的共享连接库,装载后,可以用工具程序检索或设置相应的变量。如果代理程序(snmpd)未运行,在snmpd.conf配置文件中增加一行:
dlmod modulename /usr/local/temp/modulename.so
然后重新启动snmpd代理程序, 程序会自动装载共享库。
评论暂时关闭