2016-06-16 16 views
0

Ich versuche, die System-Up-Zeit mit #snmp (Lextm.SharpSnmpLib.9.0.1) und C# zu überwachen.Wie erhalten Sie rohe TimeTicks mit SharpSnmp?

Hier ist mein Code:

 public int GetUptime() 
    { 
     var uptimeMessage = new GetNextRequestMessage(0, VersionCode.V1, new OctetString("public"), 
      new List<Variable> 
      { 
       new Variable(new ObjectIdentifier(Oids.SystemUpTime)) 
      }); 
     var response = uptimeMessage.GetResponse(10000, _agentEndPoint); 
     var ticks = response.Pdu().Variables[0].Data.ToString(); 
     return int.Parse(ticks); 
    } 

aber ich bin ein CS0103 Fehler, wenn ich versuche .Data Eigenschaft auf eine Antwort vom Typ Timeticks zu bekommen.

Hier ist das Sichtfenster von VS2015 enter image description here

Ist dies nicht ein Problem, wie kann ich roh Ticks Wert mit #snmp zugreifen?

+0

Sieht so aus, als würde etwas in 'Data' versuchen, auf die nicht vorhandene' count' zuzugreifen, wenn es auf '_count' zugreifen soll. – wablab

+0

@Nomada Nur aus Interesse ist Oid.SystemUpTime ein gepunkteter oid String oder String oid? Ich suche, eine Schnur oid zu seinem gepunkteten oid Äquivalent zu konvertieren. Jedes Codebeispiel wäre großartig. – Joseph

+0

@Joseph Oids ist eine statische Klasse mit Const-Strings: Zum Beispiel: 'public const Zeichenfolge SysUpTime =" 1.3.6.1.2.1.1.3 ";' 'public const Zeichenfolge SystemUpTime =" 1.3.6.1.2.1.25.1.1 ";" – Nomada

Antwort

1

Durch Überprüfung des Quellcodes TimeTicks in dieser Bibliothek können Sie die ToString Methode in der Tat generiert eine Zeichenfolge in .NET TimeSpan basiert. Deshalb, wenn Sie versuchen, es zu analysieren, wie int Ausnahmen kommen.

Wie für diese OID Sie bereits wissen, Data wäre eine TimeTicks sollten Sie auf diesen Typ umwandeln und dann rufen Sie ToUInt32.