代码之家  ›  专栏  ›  技术社区  ›  John Smith

使用C的NET-SNMP SET请求

  •  0
  • John Smith  · 技术社区  · 9 年前

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

    我试图搜索一些函数文档,但找不到。

    2 回复  |  直到 9 年前
        1
  •  0
  •   k1eran    9 年前
    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
    

    因此,我们使用以下语句将这个oid与NULL值一起添加到PDU中:(所有oid都应与NULL值配对,以用于传出的信息请求。对于SNMP-SET PDU,我们将输入我们希望将oid设置为的值)。

       snmp_add_null_var(pdu, anOID, anOID_len);
    
        2
  •  0
  •   Marco Thome    6 年前

    您可以遵循以下步骤 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