如何使用NET-SNMP C API设置SNMP SET请求?
我尝试搜索一些功能文档但我找不到任何功能。
答案 0 :(得分:0)
man snmp_pdu_create
显示......
#include <net-snmp/pdu_api.h>
netsnmp_pdu *snmp_pdu_create( int type);
/*
* 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