2012-08-12 406 views
2

我有一個虛擬機與Windows 7.我已經安裝了Windows的SNMP代理服務。 然後從我的電腦中,我開發了一個C#中的小程序,使用snmpsharpnet與SNMP代理進行通信並且可以工作!如何在Windows 7中查找CPU使用情況的OID?

我使用了一些樣品的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的負荷,但我doen't工作(有信息從here)。我還安裝了Mib瀏覽器(從ireasoning.com)以瞭解正確的OID。

我的問題是:

  • 哪個是正確的OID擺脫Windows 7的CPU負載?

  • OID對於所有系統都不常見,不是嗎?我的意思是linux,windows,路由器有自己的OID?

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

回答

4

1.3.6.1.2.1.25.3.3.1.2處於HOST-RESOURCES MIB的hrProcessorTable的一部分。使用像Mib Browser這樣的工具,在表OID上執行SNMP Walk,1.3.6.1.2.1.25.3.3。或者,從該OID開始並執行SNMP Next。如果例如具有雙核CPU,對於核中的一個處理器負載可以是一個OID等 1.3.6.1.2.1.25.3.3.1.2 0.1

+0

我的vm只有在cpu上。在我的Ireasoning MIB瀏覽器中,我去了OID hrProcessorLoad(.1.3.6.1.2.1.25.3.3.1.2)並且工作(它在最後一分鐘給出了平均值)。但在我的代碼中,snmp.get返回null – 2012-08-12 18:17:07

+0

我對MIB瀏覽器並不是很熟悉,但我認爲在進行SNMP調用時會有原始文本輸出。我想知道它是否在爲您執行SNMP Next呼叫。 – dangowans 2012-08-12 18:19:45

+0

也許吧。我將按照你的想法,並嘗試做一些GetNext調用... – 2012-08-12 18:22:56

相關問題