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

MIB报错(noSuchName)及私有RASP-MIB相关技术咨询

解决netSnmp中(noSuchName):该MIB中不存在此变量名的问题

先看你贴的RASP-MIB内容,直接就能找到几个导致错误的核心问题:

  1. 没有定义可查询的实际变量:你只创建了MIB的根节点rasp MODULE-IDENTITY,但下面完全没有具体的OBJECT-TYPE(比如要采集的CPU温度、内存使用率这类实际数据项)。SNMP查询的是具体变量,没有这些变量,自然会返回noSuchName。
  2. RowStatus定义不完整:你写的RowStatus ::= TEXTUAL-CONVENTION S...明显是截断状态,这会导致MIB编译失败,net-snmp根本无法正确解析这个MIB的结构。

下面给你梳理私有MIB配置和使用的关键注意事项,一步步来就不会踩坑:

一、先把MIB结构补完整

1. 添加具体的采集变量

在你的根节点下补充实际要采集的对象,比如采集树莓派CPU温度的示例:

raspObjects OBJECT IDENTIFIER ::= { rasp 1 }

raspCpuTemp OBJECT-TYPE
    SYNTAX INTEGER
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION "树莓派CPU温度(单位:摄氏度)"
    ::= { raspObjects 1 }

只有定义了这类具体变量,SNMP才有可查询的目标。

2. 修复TEXTUAL-CONVENTION定义

如果不是要自定义RowStatus,其实直接从SNMPv2-TC里导入即可,不用自己编写:

IMPORTS
    OBJECT-TYPE, MODULE-IDENTITY, enterprises FROM SNMPv2-SMI
    TEXTUAL-CONVENTION, RowStatus FROM SNMPv2-TC;

要是非要自定义,就得写完整的结构,比如标准RowStatus的写法:

RowStatus ::= TEXTUAL-CONVENTION
    STATUS current
    DESCRIPTION
        "用于标识概念行的状态"
    SYNTAX INTEGER {
        active(1),
        notInService(2),
        notReady(3),
        createAndGo(4),
        createAndWait(5),
        destroy(6)
    }

二、正确编译与验证MIB

  • 先检查MIB语法:
    执行snmpwalk -m +RASP-MIB -v 2c -c public localhost .1.3.6.1.4.1.9100(这个OID对应你的rasp根节点),如果有语法错误,会直接给出提示,先把所有语法问题修复完毕。
  • 用mib2c生成代理代码框架:
    执行mib2c raspObjects,根据提示选择合适的代码生成模式,这样能快速搭建采集逻辑的基础框架,不用从零写起。

三、配置net-snmp加载私有MIB

  1. 把你的RASP-MIB文件放到net-snmp的MIB目录,通常是/usr/share/snmp/mibs/或者用户个人目录下的~/.snmp/mibs/。
  2. 修改snmpd.conf配置文件:
    • 添加mibs +RASP-MIB,确保snmpd启动时加载这个私有MIB;
    • 添加访问控制规则,比如view systemview included .1.3.6.1.4.1.9100,让你的私有OID段可以被正常查询;
  3. 重启snmpd服务:sudo systemctl restart snmpd(不同系统可能用service snmpd restart命令)。

四、验证查询与完善采集逻辑

  • 用变量名或OID验证查询:
    比如查询刚才定义的CPU温度:snmpwalk -v 2c -c public localhost raspCpuTemp,或者直接用OID查询:snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.9100.1.1。
  • 填充实际采集逻辑:
    生成的mib2c代码里,需要你自己编写获取数据的逻辑,比如读取树莓派的/sys/class/thermal/thermal_zone0/temp文件,把数值转换为摄氏度后返回。写完后编译成动态模块加载到snmpd,或者直接编译进snmpd即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:59:02