我正在尝试与我的应用程序集成到SNMP扫描中,并深入到Google以尝试查找示例等。因此,我遇到了SNMPSharpNet DLL,它允许我开始使用这网站上的SNMP联系设备。
然而,我有两个类似的相关问题:
我的代码如下所示:
Sub GetNextResult()
Dim host As String = "xx.xx.xx.xx"
Dim community As String = "public"
Dim requestOid() As String
Dim result As Dictionary(Of Oid, AsnType)
Dim rootOid As Oid = New Oid("1")
Dim nextOid As Oid = rootOid
Dim keepGoing As Boolean = True
requestOid = New String() {rootOid.ToString()}
Dim snmp As SimpleSnmp = New SimpleSnmp(host, community)
snmp.SuppressExceptions = False
If Not snmp.Valid Then
Console.WriteLine("Invalid hostname/community.")
Exit Sub
End If
While keepGoing
result = snmp.GetNext(SnmpVersion.Ver1, New String() {nextOid.ToString()})
If result IsNot Nothing Then
Dim kvp As KeyValuePair(Of Oid, AsnType)
For Each kvp In result
If rootOid.IsRootOf(kvp.Key) Then
Console.WriteLine("{0}: ({1}) {2}", kvp.Key.ToString(), _
SnmpConstants.GetTypeName(kvp.Value.Type), _
kvp.Value.ToString())
nextOid = kvp.Key
Else
keepGoing = False
End If
Next
Else
Console.WriteLine("No results received.")
keepGoing = False
End If
End While
End Sub我想我的问题是:是否有某种参考,我可以参考以获得特定信息所需的不同oIDs的列表?或者,如果没有,我是否可以继续使用oID 1,并尝试修复为什么它会不断地使用泛型错误错误?
任何帮助都很感激谢谢。
发布于 2014-10-16 13:44:54
如果您碰巧知道什么是MIB浏览器,请使用它签出标准MIB文档,然后您将看到"iso“的OID是大多数使用中OID的根。这保证了您的步行操作确实会将您想要的项目转储出去。
我没有思科催化剂2960,所以不能完全复制你所说的“它什么也不回”。不要期望设备实现诸如OIDVIEW这样的站点中的每个OID列表,因为您应该使用的始终是设备手册和供应商材料。
我查看了snmpsharpnet文档,发现您的代码是从那里派生的。遗憾的是,米兰没有提供步行功能,id=108中列出的代码片段可能会产生误导,因此您将得到第二个问题。
SNMP是预期的,因为GET-NEXT应该会碰到一个NoSuchName错误,以指示所有可用的OID都被转储出去。然而,snmpsharpnet中的示例代码并没有告诉用户这是意料之中的事情。基于GET批量的游走示例是正确的,因为不会出现NoSuchName错误.
(虽然不是广告),#SNMP有它的Messenger.Walk和Messenger.BulkWalk方法(看起来类似),这些方法也显示了如何进行步行操作。
https://stackoverflow.com/questions/26373076
复制相似问题