使用C的NET-SNMP SET请求

时间:2015-07-21 08:24:25

标签: snmp net-snmp

如何使用NET-SNMP C API设置SNMP SET请求?

我尝试搜索一些功能文档但我找不到任何功能。

2 个答案:

答案 0 :(得分:0)

man snmp_pdu_create

显示......

#include <net-snmp/pdu_api.h> 
netsnmp_pdu *snmp_pdu_create( int type);

引用NET-SNMP website

   /*
    * Create the PDU for the data for our request.
    *   1) We're going to GET the system.sysDescr.0 node.
    */    
   pdu = snmp_pdu_create(SNMP_MSG_GET);

所以,让我们填写我们要求的oid。让我们为这个例子获取system.sysDescr.0变量。你可以通过各种方式创建有问题的oid。您可以将自己的数字无符号整数值放入我们在上面创建的anOID数组中,或者您可以使用以下函数调用之一来执行此操作。我们建议使用第一个(get_node),因为它是最强大的并且接受更多类型的OID。

read_objid(".1.3.6.1.2.1.1.1.0", anOID, &anOID_len);
#if OTHER_METHODS    get_node("sysDescr.0", anOID, &anOID_len);     
read_objid("system.sysDescr.0", anOID, &anOID_len);    
#endif

因此我们使用以下语句将此值添加到PDU中,并为PDU提供NULL值:(所有oid都应与传递信息请求的NULL值配对。对于SNMP-SET pdu,我们放置在我们想要将oid设置为的值中。

   snmp_add_null_var(pdu, anOID, anOID_len);

答案 1 :(得分:0)

您可以按照http://www.net-snmp.org/wiki/index.php/TUT:Simple_Application的步骤进行操作,而不要使用

snmp_add_null_var(pdu, varoid, varoid_len);

只需使用

snmp_add_var(pdu, varoid, varoid_len, type, value);

完整示例:https://github.com/winlibs/net-snmp/blob/master/apps/snmpset.c