使用SNMP(OID-MIB)实现设备间数据传输的相关问题咨询
SNMP多设备数据传输问题解答
1. 是否需要自定义专属MIB和OID
是否自定义取决于你要传输的数据类型:
- 无需自定义场景:如果待传输的是设备通用指标(如CPU/内存使用率、网口流量、系统运行时长等),这类参数已有公有MIB(如MIB-II、接口MIB等)定义的标准OID覆盖,直接复用即可,不需要额外开发。
- 需要自定义场景:如果待传输的是设备特有私有数据(如自定义传感器数值、业务模块专属运行状态、私有告警类型等),公有MIB没有对应定义,就需要自定义专属MIB文件、申请私有OID分支做数据建模,保证管理端可以正确解析私有数据。3台不同类型的设备可以分别使用独立的私有OID分支,不会出现标识冲突。
2. 能否通过C代码实现数据传输功能
完全可以,业界通用的Net-SNMP开源库原生支持C语言开发,可分别实现设备端SNMP代理、管理端采集程序的全链路功能:
- 设备端(被管理侧):基于Net-SNMP开发自定义SNMP Agent,将待上报的各类数据绑定到对应OID节点,既可以响应管理端的GET/GETBULK查询请求返回数据,也可以通过TRAP主动向管理端推送事件、告警类数据。
- 管理端:基于Net-SNMP的C API开发采集程序,向3台设备的SNMP Agent发起查询请求,解析返回的OID对应数据后即可做后续存储、分析处理。
以下是管理端发起SNMP GET请求的核心代码示例:
// 基于Net-SNMP库的SNMP查询Demo #include <net-snmp/net-snmp-config.h> #include <net-snmp/net-snmp-includes.h> int main(int argc, char **argv) { struct snmp_session session, *session_ptr; struct snmp_pdu *request_pdu, *response_pdu; oid target_oid[MAX_OID_LEN]; size_t oid_len = MAX_OID_LEN; int req_status; // 初始化SNMP库 init_snmp("snmp_collector"); snmp_sess_init(&session); session.peername = "192.168.1.20"; // 待采集设备的IP session.version = SNMP_VERSION_2c; session.community = (u_char *)"public"; // SNMP读团体字 session.community_len = strlen((const char *)session.community); // 建立SNMP会话 session_ptr = snmp_open(&session); if (!session_ptr) { snmp_perror("SNMP会话建立失败"); exit(EXIT_FAILURE); } // 构造GET请求PDU,填入目标OID request_pdu = snmp_pdu_create(SNMP_MSG_GET); // 示例OID:MIB-II的系统描述字段 read_objid("1.3.6.1.2.1.1.1.0", target_oid, &oid_len); snmp_add_null_var(request_pdu, target_oid, oid_len); // 同步发送请求并接收响应 req_status = snmp_synch_response(session_ptr, request_pdu, &response_pdu); if (req_status == STAT_SUCCESS && response_pdu->errstat == SNMP_ERR_NOERROR) { // 打印返回的OID对应数据 print_variable(response_pdu->variables->name, response_pdu->variables->name_length, response_pdu->variables); } // 释放资源 if (response_pdu) snmp_free_pdu(response_pdu); snmp_close(session_ptr); return EXIT_SUCCESS; }
编译时需要链接Net-SNMP依赖,指令为:gcc snmp_demo.c -o snmp_demo $(pkg-config --cflags --libs netsnmp)
内容的提问来源于stack exchange,提问作者M Acar
相关产品推荐
相关产品推荐

