2012年(366)
分类: 虚拟化
2012-03-30 21:13:15
主要是接收并处理snmp客户端发送控制命令:启动/停止单个节目的录制。也就是实现snmp的SET命令。
1.还是从MIB开始。
由于只是一个简单的起停命令,前面定义的recordStatusTable中的Status字段完全满足要求,我们只需要给它设置一个不同的值就可以了。
之前在文件"/usr/local/share/snmp/mibs/FIGURE-IT-MIB.txt"中给它定义的访问属性是:“read-only”,将它改成“read-write”就OK了。
2.生成代码,与之前完全相同,就不多说了。
3.由于包含有“read-write”属性的IOD,生成的代码就多了些处理动作。我们在处理函数recordStatusTable_handler()的“case MODE_SET_ACTION”如下实现:
4.修改配置文件,/usr/local/share/snmp/Record.conf,确保里面类似有如下一行:
这个“public”可以定义成自己想要的其他名称,但一定要是rwcommunity,表示赋予读写权限。
更多的,参见FAQ的“How do I configure access control?”
5.编译程序,使用snmpset发送测试命令:
snmpset -v 1 -c public localhost FIGURE-IT-MIB::recordStatusTable.recordStatusEntry.Status.3 s stop
简单解释一下,-v 1:表示使用snmp v1命令
-c public localhost :表示"public"就是上面定义的名称。
FIGURE-IT-MIB::recordStatusTable.recordStatusEntry.Status 就是OID
3:表示设置index=3的行中的Status列
s:要设置值的类型
stop:就是具体的值了。
可以看到程序输出:
说明就Ok了。
6.snmp到此告一段落了。一点体会:snmp虽然叫简单网管协议,可协议本身真的不简单!