integer - 进行 snmp walk 时未实现 snmp 值范围约束
问题描述
我已经为 Host Resources MIB 执行了 SNMP walk。
有关主机资源 MIB 的更多了解,请参阅此
https://www.netscantools.com/snmp-host-resources-mib-analysis.html
snmp walk 是使用命令完成的
snmpwalk -v 2c -c <community_string> <ip_address> 1.3.6.1.2.1.25.2.3
这里 hrStorageRam 的值
HOST-RESOURCES-MIB::hrStorageType.1 = OID: HOST-RESOURCES-TYPES::hrStorageRam
给出尺寸值
HOST-RESOURCES-MIB::hrStorageSize.1 = INTEGER: 2677943624
分配单元为 1024 字节
在浏览此 MIB 的 RFC 页面时https://www.rfc-editor.org/rfc/rfc2790
我们可以看到 hrStorageType 是 Intger32 类型,并且有 -2147483648 到 2147483647 范围的约束
但是为什么 SNMP walk 给出的结果比这个约束更多。
想要验证 SNMP walk 是否遵循这个 RFC2790 规则。
解决方案
正确的答案是它取决于您使用的 SNMPWALK 和版本。到处都是虫子。
首先,代理应该返回正确的值。所以如果没有,那就是一个错误。
但是,即使不是这样,因为在 SNMP 中设备应该是“简单”设备,管理应用程序应该是“智能”设备,并正确处理它。
无论如何,我用 MIMIC Simulator 和 NET-SNMP 版本花了 5 分钟来测试它
% snmpwalk -V
NET-SNMP version: 5.8
并且它的行为正确(例如,使用您的确切值):
% snmpwalk -v2c -c public 10.0.0.8 .1.3.6.1.2.1.25.2.3.1.5
HOST-RESOURCES-MIB::hrStorageSize.1 = INTEGER: 0
HOST-RESOURCES-MIB::hrStorageSize.2 = INTEGER: 1150404
HOST-RESOURCES-MIB::hrStorageSize.3 = INTEGER: -1617023672
HOST-RESOURCES-MIB::hrStorageSize.4 = INTEGER: 7483
推荐阅读
- sql - 执行多个查询而不会丢失返回的 id
- reporting-services - 如何仅对 RDLC 中连接数据中的一个重复值求和
- microservices - 我如何通过即时一致性满足跨微服务的业务需求?
- service - 使用 Windows 服务的蓝牙自定义配对
- c++ - 如何在 wxwidgets 中将 AppendCheckItem 默认设置为“检查”?
- node.js - 将 AWS SSL 证书安装到主服务器
- java - Arrays Left Rotation { 小程序员与时间复杂性的斗争}
- jquery - 如何在 Jquery 脚本中编写动态 URL
- swift - 隐藏标签中的文本时尝试调整 UIView 的大小
- android - 从 Firebase 动态链接获取查询参数