You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SnmpSharpNet批量Get请求含单个无效OID返回空是否正常?

问题解答

现象是否正常?

该现象完全符合SNMPv1的标准规范,属于正常情况。
SNMPv1协议明确规定:当Get请求携带的OID列表中存在任意一个无效OID(设备不支持、无返回值等),设备会直接返回全局错误响应,不会携带其余有效OID的返回结果,因此SnmpSharpNet的SimpleSnmp.Get方法会直接返回Nothing。

是否需要逐个OID单独查询?

不需要直接采用逐个查询的方案,可按目标设备的支持情况选择更优的处理方式:

  • 若目标设备支持SNMPv2c及以上版本:
    直接修改代码中的SNMP版本参数即可,SNMPv2c引入了部分响应机制,无效OID会被单独标记错误,其余有效OID的结果会正常返回。仅需修改一行代码:
    把原代码中的
    result = snmp.Get(SnmpVersion.Ver1, requestOid)
    
    修改为
    result = snmp.Get(SnmpVersion.Ver2c, requestOid)
    
    即可一次性拿到所有有效OID的返回结果,不需要拆分请求。
  • 若目标设备仅支持SNMPv1:
    可按需选择方案:
    • OID数量少的场景:直接逐个OID发起查询,逻辑最简单
    • OID数量多的场景:采用二分法批量校验,比如先批量查询所有OID,返回Nothing就把OID列表拆成两组分别查询,递归跳过无效OID,相比逐个查询能大幅减少请求次数。

内容的提问来源于stack exchange,提问作者Dylan666

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 08:24:05