2

我有一个带有 windows 7 的 vm。我已经安装了 windows snmp 代理服务。然后从我的电脑上,我用 C# 开发了一个小程序,使用snmpsharpnet与 SNMP 代理进行通信,并且可以正常工作!

我使用了一些示例 OID,例如:

  • .1.3.6.1.2.1.1.1.0 获取系统描述
  • .1.3.6.1.2.1.25.1.6。获取进程数

所以我的程序有效并且我有正确的网络连接。

        string host = "192.168.1.92";
        string community = "public";
        SimpleSnmp snmp = new SimpleSnmp(host, community);

        if (!snmp.Valid)
        {
            Console.WriteLine("SNMP agent host name/ip address is invalid.");
            return;
        }
        Dictionary<Oid, AsnType> result = snmp.Get(SnmpVersion.Ver1, new string[] { ".1.3.6.1.2.1.25.3.3.1.2" }); 

        if (result == null)
        {
            Console.WriteLine("No results received.");
            Console.ReadKey();
            return;
        }

        foreach (KeyValuePair<Oid, AsnType>  kvp in result)
        {
            Console.WriteLine("{0}: {1} {2}", kvp.Key.ToString(),
                                  SnmpConstants.GetTypeName(kvp.Value.Type),
                                  kvp.Value.ToString());
        }
        Console.ReadKey();
    }

现在我正在尝试使用.1.3.6.1.2.1.25.3.3.1.2来获得 cpu 负载,但我没有工作(从这里获取信息)。我还安装了一个 Mib 浏览器(来自ireasoning.com)来学习正确的 OID。

我的问题是:

  • 从 Windows 7 获取 CPU 负载的正确 OID 是哪个?

  • OID 并非对所有系统都通用,不是吗?我的意思是 linux、windows、路由器有自己的 OID?

  • 在哪里可以找到 Windows 7 的 OID?

4

1 回答 1

4

1.3.6.1.2.1.25.3.3.1.2是 HOST-RESOURCES MIB 中 hrProcessorTable 的一部分。使用 Mib Browser 之类的工具,对表 OID 1.3.6.1.2.1.25.3.3执行 SNMP Walk 。或者,从该 OID 开始并执行 SNMP Next。例如,如果您有一个双核 CPU,则其中一个内核的处理器负载可能在像1.3.6.1.2.1.25.3.3.1.2 .1这样的 OID 中。

于 2012-08-12T18:06:45.520 回答