snmpd扩展方法二: 共享链接库形式

首先, 在任一目录下编译生成共享链接库. 假定目录为/usr/local/temp. 将两个源文件, ustScalarSet.h和ustScalarSet.c拷贝到此目录下. 按如下命令序列生成共享链接库:

gcc -g -I/usr/local/include -c -o ustScalarSet.o ustScalarSet.c
gcc -g -fPIC -shared -o ustScalarSet.so ustScalarSet.o

有两种方法在代理程序中动态加载共享链接库.

第一种,适合于代理程序已运行的情况, 按如下命令序列执行:

# snmpset localhost hyj UCD-DLMOD-MIB::dlmodStatus.1 i create
# snmpset localhost hyj UCD-DLMOD-MIB::dlmodName.1 s "ustScalarSet" 
# snmpset localhost hyj UCD-DLMOD-MIB::dlmodPath.1 s "/usr/local/temp/ustScalarSet.so"
# snmpset localhost hyj UCD-DLMOD-MIB::dlmodStatus.1 i load

即可装载.这时可以用工具程序检索或设置相应的变量. 这里需要注意的是工具snmpset的用法. 代理snmpd的确省配置, 不支持任何用户设置变量. 我们可以通过配置文件snmpd.conf中的访问控制部分进行配置. 我在我的snmpd.conf文件中加入了如下两行:

rwcommunity hyj
rocommunity public

设置了一个读写community, hyj和一个只读community, public. 配置文件确省位于/usr/local/share/snmp目录下.

第二种, 直接在snmpd.conf中加入一行:

dlmod ustScalarSet /usr/local/temp/ustScalarSet.so

重新启动snmpd代理, 代理自动装载共享库.

关于代理程序以及工具程序相应的配置情况, 参见snmp.conf, snmpd.conf, 和snmpconf的man手册.


相关内容