首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SNMPSharpNET获取试图向Cisco交换机发送SNMP的通用错误

使用SNMPSharpNET获取试图向Cisco交换机发送SNMP的通用错误
EN

Stack Overflow用户
提问于 2014-10-15 01:33:42
回答 1查看 672关注 0票数 0

我正在尝试与我的应用程序集成到SNMP扫描中,并深入到Google以尝试查找示例等。因此,我遇到了SNMPSharpNet DLL,它允许我开始使用网站上的SNMP联系设备。

然而,我有两个类似的相关问题:

  1. 我试图参考网站来确定在扫描Cisco催化剂2960交换机时使用什么oID,但是它没有返回任何内容(没有错误,也没有结果)。让它正确工作的唯一方法是使用1的oID,然后从开关中提取所有的东西,因此我可以使用它作为一个引用来确定特定所需数据的特定oID。
  2. 这就引出我的下一个问题..。使用1的oID似乎确实有效,但是,部分地使用“代理响应错误”的错误,这并不能真正告诉我任何事情。每次在不同的设备上尝试SNMP时,我都会得到它,而它并没有收回所有的数据。

我的代码如下所示:

代码语言:javascript
复制
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,并尝试修复为什么它会不断地使用泛型错误错误?

任何帮助都很感激谢谢。

EN

回答 1

Stack Overflow用户

发布于 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.WalkMessenger.BulkWalk方法(看起来类似),这些方法也显示了如何进行步行操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26373076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档