使用 C 的 NET-SNMP SET 请求
NET-SNMP SET request using C
如何使用 NET-SNMP C API 设置 SNMP SET 请求?
我尝试搜索一些功能文档,但找不到。
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 添加到 PDU 中,并将其设为 NULL:(所有 oid 都应与 NULL 值配对,以用于传出的信息请求。对于 SNMP-SET pdu,我们将放置在我们想要将 oid 设置为的值中。
snmp_add_null_var(pdu, anOID, anOID_len);
您可以按照 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
如何使用 NET-SNMP C API 设置 SNMP SET 请求?
我尝试搜索一些功能文档,但找不到。
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 添加到 PDU 中,并将其设为 NULL:(所有 oid 都应与 NULL 值配对,以用于传出的信息请求。对于 SNMP-SET pdu,我们将放置在我们想要将 oid 设置为的值中。
snmp_add_null_var(pdu, anOID, anOID_len);
您可以按照 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