关于snmp报错:No Such Instance currently exists at this OID

以下为网上找到的,该错误可能的情况,我自己遇到的问题是第二种情况,需要在snmpd.conf中开启权限:

1.MIB文件没有正确添加到MIB树里面,因此agent在收到查询以后真的找不到目标OID.

2.MIB文件添加成功了,但是snmpd.conf里面的关于权限的配置不对。agent在收到client的查询以后也找到了该OID但是因为没有权限因此返回“No Such Instance currently exists at this OID”。关于权限粗看会以为很复杂,尤其是在心浮气燥的时候,其实静下心来仔细看看就会发现也就那么回事。以USM命名的权限管理还是很清晰的。

3.第三种情况比较特殊,对于net-snmp不熟的也可能会范理解上的错误。

使用snmpget而忘记了添加OID结尾的实例标识符,net-snmp则会报出“No Such Instance currently exists at this OID”的错误。

如果怀疑是这中错误可以用snmpgetnext先试一试。

SNMP中的GETNEXT请求的作用类似snmpget,但是更加具有通用性,它是一个具有模糊匹配特性的GET请求。有时使用snmpget会报错但是使用snmpgetnext则不会报错,它会向下查找 并找到距离最近的一个实例,然后返回它的值。(单独使用snmpgetnext操作的机会不太多,它经常被当作遍历表中所有数据的一个基本操作。

4.我是想获取硬盘的使用情况,出现该错误

snmpwalk -v 2c -c public localhost  .1.3.6.1.4.1.2021.9.1.7

UCD-MIB:dskAvail.1: No Such Instance currently exists at this OID

所以,我查看了snmpd.conf文件,将其中的 disk checks 配置如下

# disk checks

disk / 10000

load [1MAX=12.0] [5MAX=12.0] [15MAX=12.0]load 12 14 14

enterprises.ucdavis.loadTable.laEntry.loadaveIndex.1 = 1

enterprises.ucdavis.loadTable.laEntry.loadaveIndex.2 = 2

enterprises.ucdavis.loadTable.laEntry.loadaveIndex.3 = 3

enterprises.ucdavis.loadTable.laEntry.loadaveNames.1 = "Load-1"

enterprises.ucdavis.loadTable.laEntry.loadaveNames.2 = "Load-5"

enterprises.ucdavis.loadTable.laEntry.loadaveNames.3 = "Load-15"

enterprises.ucdavis.loadTable.laEntry.loadaveLoad.1 = "0.49" Hex: 30 2E 34 39

enterprises.ucdavis.loadTable.laEntry.loadaveLoad.2 = "0.31" Hex: 30 2E 33 31

enterprises.ucdavis.loadTable.laEntry.loadaveLoad.3 = "0.26" Hex: 30 2E 32 36

enterprises.ucdavis.loadTable.laEntry.loadaveConfig.1 = "12.00"

enterprises.ucdavis.loadTable.laEntry.loadaveConfig.2 = "14.00"

enterprises.ucdavis.loadTable.laEntry.loadaveConfig.3 = "14.00"

enterprises.ucdavis.loadTable.laEntry.loadaveErrorFlag.1 = 0

enterprises.ucdavis.loadTable.laEntry.loadaveErrorFlag.2 = 0

enterprises.ucdavis.loadTable.laEntry.loadaveErrorFlag.3 = 0

enterprises.ucdavis.loadTable.laEntry.loadaveErrMessage.1 = ""

enterprises.ucdavis.loadTable.laEntry.loadaveErrMessage.2 = ""

enterprises.ucdavis.loadTable.laEntry.loadaveErrMessage.3 = ""

至此可以正常获取到硬盘资源了


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容