三: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代理程序, 程序会自动装载共享库。


相关内容