0

如何在不传递 SNMP 版本的情况下对 OID 的 SNMP 执行 GET 方法。

就我而言,有些设备响应 V1.0,有些响应 V2.0。

我在 OIDVIEW 中遇到过,有一个“自动”SNMP 版本而不是传递版本。

我知道 V3.0 需要密码和用户名。在 V1.0 和 V2.0 的情况下,它只是社区。

public static string GetData(string ipaddress)
    {
        string community = "private", response = "";
        SimpleSnmp snmp = new SimpleSnmp(ipaddress, community);
        if (!snmp.Valid)
            response="ip address is invalid. -" + ipaddress;

        Dictionary<Oid, AsnType> result = snmp.Get(SnmpVersion.Ver2,
                                              new string[] { "1.3.6.1.2.1.1.1.0" });
        if (result == null)
            response=("No results received. -" + ipaddress);
        else
        {
            foreach (KeyValuePair<Oid, AsnType> kvp in result)
                response = kvp.Value.ToString();
        }

        return response;
    }

我期待类似SnmpVersion.Automatic的东西SnmpVersion.Ver1 , Ver2 , Ver3

是否有使用 snmpsharpnet 或任何其他组件的解决方案?

4

1 回答 1

0

如果您花一些时间在 RFC 文档(例如 RFC 3584)上,

https://www.rfc-editor.org/rfc/rfc3584

你会看到甚至 v1 和 v2c 也不同。

#SNMP 被设计为低级库,它不会尝试成为 OIDVIEW 等应用程序级的东西。不应该向用户隐藏任何细节,这就是为什么没有“自动”。

“自动”是 SNMP RFC 文档之外的内容。OIDVIEW 可能将其定义为为用户选择最合适版本的算法,但我认为#SNMP 不需要支持此类供应商定义的行为。

您当然可以查看 snmpsharpnet 或其他组件。

于 2014-03-12T04:52:00.993 回答