【问题标题】:Error running SNMP with snmpsharpnet使用 snmpsharpnet 运行 SNMP 时出错
【发布时间】:2014-06-06 21:00:57
【问题描述】:

我在使用 snmpsharpnet 库运行 SNMP get 命令时遇到问题。我正在研究他们提供的用于运行简单获取的示例,但它会出错。我已经测试过在盒子上运行这个 OID 并且我能够得到响应,但是我不能使用这个程序

我的代码如下所示:

try{
    SimpleSnmp snmp = new SimpleSnmp(HOST, COMMUNITY);

    Pdu pdu = new Pdu();
    //pdu.Type = SnmpConstants.GETNEXT; // type GETNEXT
    pdu.VbList.Add(".1.3.6.1.2.1.1.1.0");
    Dictionary<Oid, AsnType> result = snmp.Get(SnmpVersion.Ver2,pdu); //.GetNext(pdu);
    if (result == null){
        Console.WriteLine("Request failed.");
    }else{
        foreach (KeyValuePair<Oid, AsnType> entry in result)
        {
            Console.WriteLine("{0} = {1}: {2}", entry.Key.ToString(), SnmpConstants.GetTypeName(entry.Value.Type),
            entry.Value.ToString());
        }
    }
}catch (Exception ex){
    Console.WriteLine("Error: " + ex + Environment.NewLine + "-------------------------------------------------------");
}

我收到的错误如下所示:

A first chance exception of type 'System.Net.Sockets.SocketException' occurred in System.dll
A first chance exception of type 'System.Net.Sockets.SocketException' occurred in System.dll
A first chance exception of type 'System.Net.Sockets.SocketException' occurred in System.dll
A first chance exception of type 'SnmpSharpNet.SnmpException' occurred in SnmpSharpNet.dll
The thread 0xeec has exited with code 259 (0x103).

提前致谢!

【问题讨论】:

  • 您可能想提及您如何从相关系统(例如 snmpget)中获得正确结果。确保主机和社区字符串在工作示例和提供的代码匹配之间匹配。检查SimpleSnmp 实例的Valid 属性。默认的pdu.TypeGET,但为了安全起见,你应该设置它。
  • 可以添加程序的输出吗? Console.WriteLine 应该在控制台中写下错误的描述。
  • sharp-snmp 标签用于#SNMP 库。不要将它用于 snmpsharpnet,因为它们是完全不同的东西。
  • 我得到的输出是上面原始帖子中显示的内容,在我的终端窗口中我得到“请求失败”。留言

标签: c# snmp snmpsharpnet


【解决方案1】:

您没有收到远程主机对您发送的请求的响应。这就是套接字异常的原因。其中有 3 个,因为 SimpleSnmp 类的默认设置是尝试 3 次发送和接收来自服务器的响应。

如果您将snmp 对象的Retry 属性设置为比2 更大的数字,它将发出更多请求并侦听更多响应,从而产生更多此类异常。

snmp 的标准行为是不对 (a) 格式错误或 (b) 没有正确社区字符串的请求生成任何响应。

如果您已经展示了运行这段代码所产生的控制台输出,我敢肯定它会说 Request failed.

【讨论】:

  • 感谢@Petesh 的回复。很高兴知道,我实际上想知道如何改变这一点。我今天早上尝试将主机和社区更改为不同的设备,并在第一次尝试时收到了信息。然后我切换回来,三次检查主机和社区值,但我仍然收到原始帖子中的错误。
  • @Ferbla 这表明您的代码是可以的。根据您的症状,听起来像是(a)服务器实际上没有运行 snmp 服务,或者(b)防火墙干扰了您与服务器的通信。您应该使用来自不同机器的不同 snmp 客户端 (2) 从同一机器检查 snmp 访问 (1)。如果它在另一台机器上工作,则表明存在连接/防火墙问题。
  • 感谢您的帮助。我将此应用程序移至生产环境并通过了。原来是防火墙问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-29
  • 2015-10-11
相关资源
最近更新 更多