执行net-snmp测试程序,提示Cannot find module (SNMPv2-MIB): At line 0 in (none)

本文介绍了一个基于net-snmp库的测试程序在获取交换机信息时遇到MIB模块找不到的问题,并分享了解决方案,即通过调整MIB文件路径至默认目录来修复该问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写了一个基于net-snmp库的测试程序,获取交换机信息,有些奇怪的提示

MIB search path: /root/.snmp/mibs:/usr/local/share/snmp/mibs
Cannot find module (SNMPv2-MIB): At line 0 in (none)
Cannot find module (IF-MIB): At line 0 in (none)
Cannot find module (IP-MIB): At line 0 in (none)
Cannot find module (TCP-MIB): At line 0 in (none)
Cannot find module (UDP-MIB): At line 0 in (none)
Cannot find module (HOST-RESOURCES-MIB): At line 0 in (none)
Cannot find module (NOTIFICATION-LOG-MIB): At line 0 in (none)
Cannot find module (DISMAN-EVENT-MIB): At line 0 in (none)
Cannot find module (DISMAN-SCHEDULE-MIB): At line 0 in (none)
Cannot find module (UCD-SNMP-MIB): At line 0 in (none)
Cannot find module (UCD-DEMO-MIB): At line 0 in (none)
Cannot find module (SNMP-TARGET-MIB): At line 0 in (none)
Cannot find module (NET-SNMP-AGENT-MIB): At line 0 in (none)
Cannot find module (HOST-RESOURCES-TYPES): At line 0 in (none)
Cannot find module (SNMP-MPD-MIB): At line 0 in (none)
Cannot find module (SNMP-USER-BASED-SM-MIB): At line 0 in (none)
Cannot find module (SNMP-FRAMEWORK-MIB): At line 0 in (none)
Cannot find module (SNMP-VIEW-BASED-ACM-MIB): At line 0 in (none)
Cannot find module (SNMP-COMMUNITY-MIB): At line 0 in (none)
Cannot find module (IP-FORWARD-MIB): At line 0 in (none)
Cannot find module (NET-SNMP-PASS-MIB): At line 0 in (none)
Cannot find module (NET-SNMP-EXTEND-MIB): At line 0 in (none)
Cannot find module (UCD-DLMOD-MIB): At line 0 in (none)
Cannot find module (SNMP-NOTIFICATION-MIB): At line 0 in (none)
Cannot find module (SNMPv2-TM): At line 0 in (none)
Cannot find module (NET-SNMP-VACM-MIB): At line 0 in (none)
1 3 6 1 2 1 1 5 0 STRING: "HUAWEI"

参考了这个找到解决方法:

https://blog.youkuaiyun.com/qq_27204267/article/details/51679191

原来我安装net-snmp时候,路径跟默认的不同


使用懒人方法,直接把

拷贝到默认目录/usr/local/share/snmp/mibs,问题解决,不知道有没有后患。

[root@localhost ~]# snmpwalk -v 2c -c n0j0J2S5 192.168.2.142|more SNMPv2-MIB::sysDescr.0 = STRING: SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.674.10892.5 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (103270343) 11 days, 22:51:43.43 SNMPv2-MIB::sysContact.0 = STRING: \"support@dell.com\" SNMPv2-MIB::sysName.0 = STRING: idrac-7NDGYX1 SNMPv2-MIB::sysLocation.0 = STRING: \"unknown\" SNMPv2-MIB::sysORLastChange.0 = Timeticks: (8) 0:00:00.08 SNMPv2-MIB::sysORID.1 = OID: SNMPv2-MIB::snmpMIB SNMPv2-MIB::sysORID.2 = OID: TCP-MIB::tcpMIB SNMPv2-MIB::sysORID.3 = OID: IP-MIB::ip SNMPv2-MIB::sysORID.4 = OID: UDP-MIB::udpMIB SNMPv2-MIB::sysORID.5 = OID: SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup SNMPv2-MIB::sysORID.6 = OID: SNMP-MPD-MIB::snmpMPDCompliance SNMPv2-MIB::sysORID.7 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance SNMPv2-MIB::sysORID.8 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance SNMPv2-MIB::sysORDescr.1 = STRING: The MIB module for SNMPv2 entities SNMPv2-MIB::sysORDescr.2 = STRING: The MIB module for managing TCP implementations SNMPv2-MIB::sysORDescr.3 = STRING: The MIB module for managing IP and ICMP implementations SNMPv2-MIB::sysORDescr.4 = STRING: The MIB module for managing UDP implementations SNMPv2-MIB::sysORDescr.5 = STRING: View-based Access Control Model for SNMP. SNMPv2-MIB::sysORDescr.6 = STRING: The MIB for Message Processing and Dispatching. SNMPv2-MIB::sysORDescr.7 = STRING: The management information definitions for the SNMP User-based Securit y Model. SNMPv2-MIB::sysORDescr.8 = STRING: The SNMP Management Architecture MIB. SNMPv2-MIB::sysORUpTime.1 = Timeticks: (4) 0:00:00.04 SNMPv2-MIB::sysORUpTime.2 = Timeticks: (5) 0:00:00.05 SNMPv2-MIB::sysORUpTime.3 = Timeticks: (5) 0:00:00.05 SNMPv2-MIB::sysORUpTime.4 = Timeticks: (5) 0:00:00.05 SNMPv2-MIB::sysORUpTime.5 = Timeticks: (5) 0:00:00.05 SNMPv2-MIB::sysORUpTime.6 = Timeticks: (7) 0:00:00.07这里面有cpu的信息吗?
最新发布
03-12
<think>嗯,用户想通过SNMPWalk命令的输出找到CPU相关信息,用的是SNMPv2c版本,社区字符串是n0j0J2S5,目标IP是192.168.2.142。首先,我需要回忆一下SNMP的相关知识,特别是OID的结构和CPU相关的部分。 首先,SNMPWalk是用来遍历设备上的所有可用OID的,用户需要找到与CPU相关的OID。常见的CPU信息可能包括负载、使用率等。通常,这些信息位于MIB树中的某个特定分支下。比如,我记得在HOST-RESOURCES-MIB(主机资源MIB)中可能有CPU相关的信息,具体来说,hrProcessorLoad这个OID对应的是处理器的负载情况。 那HOST-RESOURCES-MIB对应的OID是什么呢?MIB树的结构中,host资源的部分是.1.3.6.1.2.1.25,而处理器相关的可能是在.1.3.6.1.2.1.25.3.3.1.2,也就是hrProcessorLoad。每个实例对应一个CPU核心的负载。所以用户应该检查这个OID下的值。 另外,用户需要注意不同设备可能实现不同的MIB,有些厂商可能有私有的OID来提供CPU信息。例如,Cisco设备可能有自己的企业级MIB。如果标准OID没有数据,可能需要查找设备的文档,看看是否有自定义的OID。 接下来,用户需要执行的命令应该是snmpwalk,指定版本为v2c,社区字符串,目标IP,以及OID。比如: ``` snmpwalk -v 2c -c n0j0J2S5 192.168.2.142 .1.3.6.1.2.1.25.3.3.1.2 ``` 如果这个命令返回了数值,比如百分比,那就说明有CPU负载的信息。如果没有结果,可能需要检查设备是否支持该OID,或者是否有权限问题。 另外,可能需要考虑其他相关的OID,比如UCD-SNMP-MIB中的ssCpuUser、ssCpuSystem等,对应的OID是.1.3.6.1.4.1.2021.11,比如.1.3.6.1.4.1.2021.11.9.0对应的是用户CPU使用率。如果用户使用的是Net-SNMP工具,可能会用到这些OID。 所以,用户可能需要尝试不同的OID,或者使用snmpwalk遍历整个树,然后过滤出包含“CPU”字样的行。例如: ``` snmpwalk -v 2c -c n0j0J2S5 192.168.2.142 | grep -i cpu ``` 这样可以直接在输出中查找关键字,但需要设备返回的OID描述中包含CPU相关词汇。不过,这种方法依赖于设备的MIB实现是否友好,有些可能不会明确标出。 此外,用户可能还需要确认SNMP服务是否正常运行,社区字符串是否正确,防火墙是否允许SNMP流量通过,这些都可能影响能否获取到数据。如果以上步骤都正确,但仍然没有结果,可能需要进一步排查网络或设备配置的问题。</think>### 分步解答 #### 1. **定位CPU相关的SNMP OID** SNMP通过对象标识符(OID)管理设备信息。CPU信息通常存储在以下OID路径中: - **标准OID**:`HOST-RESOURCES-MIB`中的处理器负载信息(`.1.3.6.1.2.1.25.3.3.1.2`)[^3] - **扩展OID**:部分设备使用`UCD-SNMP-MIB`中的CPU指标(例如`.1.3.6.1.4.1.2021.11`)[^2] #### 2. **执行SNMPWalk命令** 使用以下命令遍历CPU相关的OID: ```bash snmpwalk -v 2c -c n0j0J2S5 192.168.2.142 .1.3.6.1.2.1.25.3.3.1.2 ``` - **输出示例**: ``` HOST-RESOURCES-MIB::hrProcessorLoad.1 = INTEGER: 5% # 表示CPU负载为5% ``` #### 3. **验证其他可能的OID** 若标准OID无数据,尝试扩展MIB: ```bash snmpwalk -v 2c -c n0j0J2S5 192.168.2.142 .1.3.6.1.4.1.2021.11 ``` #### 4. **过滤关键字** 直接通过`grep`筛选包含CPU的输出: ```bash snmpwalk -v 2c -c n0j0J2S5 192.168.2.142 | grep -i cpu ``` #### 5. **排查常见问题** - **权限问题**:确保社区字符串`n0j0J2S5`具有读取权限[^4] - **设备兼容性**:部分设备可能隐藏或未实现标准OID,需参考厂商文档 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值