2017-08-22 4 views
0

Ich werde shrarpsnmp Bibliothek für Entwicklung Manager für SNMPv2-Geräte verwenden. Ich verstehe diese Art von API, die ich verwenden sollte. Zum Beispiel möchte ich Anruf snmp Anfrage an Gerät erhalten. zwei Möglichkeiten existieren, das zu tun:Sharpsnmp API Unterschied für SNMPv2 und SNMPv3

1)

GetRequestMessage request = new GetRequestMessage(VersionCode.V2,   
Messenger.NextMessageId, Messenger.NextRequestId, new OctetString("myname"), 
new List<variable>{new Variable(new ObjectIdentifier("1.3.6.1.2.1.1.1.0"))}, 
priv, Messenger.MaxMessageSize, report); 

ISnmpMessage reply = request.GetResponse(60000, new 
IPEndPoint(IPAddress.Parse("192.168.1.2"), 161)); 

if (reply.Pdu().ErrorStatus.ToInt32() != 0) // != ErrorCode.NoError 
{ 
throw ErrorException.Create(
"error in response", 
IPAddress.Parse("192.168.1.2"), 
reply); 
} 

2)

var result = Messenger.Get(VersionCode.V2, 
    new IPEndPoint(IPAddress.Parse("192.168.1.2"), 161), 
    new OctetString("public"), 
    new List<Variable>{new Variable(new ObjectIdentifier("1.3.6.1.2.1.1.1.0"))}, 
    60000); 

Was zwischen diesen beiden Methoden ist der Unterschied? Und die SNMPv2 korrekt verwendet oder kann entweder verwendet werden?

+0

In 1 haben Sie einen falschen Konstruktor gewählt. https://github.com/lextm/sharpsnmplib/blob/master/SharpSnmpLib/Messaging/Messenger.cs#L547 Der Quellcode von 'Messenger.Get' kann Ihnen sagen, welche Sie verwenden sollen. Selbst wenn Sie den falschen Konstruktor verwenden, funktioniert es natürlich immer noch, und der negative Effekt ist, dass einige Parameter verschwendet werden. –

Antwort

1

Messenger.Get ist laut der Entwickler Website veraltet.

https://help.sharpsnmp.com/html/M_Lextm_SharpSnmpLib_Messaging_Messenger_Get.htm

und hier einige Informationen über GetRequestMessage

https://help.sharpsnmp.com/html/T_Lextm_SharpSnmpLib_Messaging_GetRequestMessage.htm

+0

Vielen Dank, ich weiß über automatisch generierte Dokumentation für sharpsnmp. Aber der Unterschied ist nicht klar. –

+0

Okay, Lex Li wird wahrscheinlich hierher kommen und er hat mehr Wissen zu kommentieren, lass uns sehen :) –

0
var result = Messenger.Get(VersionCode.V1, 
          new IPEndPoint(IPAddress.Parse("192.168.1.2"), 161), 
          new OctetString("public"), 
          new List<Variable>{new Variable(new ObjectIdentifier("1.3.6.1.2.1.1.1.0"))}, 
          60000); 

Diese Anfrage ist für V1 und V2. Da Authentifizierung und Datenschutz für V1 und V2 nicht verfügbar sind. Verwenden Sie diese Methode also für V1 und V2.

var auth = new SHA1AuthenticationProvider(new OctetString("myauthenticationpassword")); 
var priv = new DESPrivacyProvider(new OctetString("myprivacypassword"), auth); 

GetRequestMessage request = new GetRequestMessage(VersionCode.V3, Messenger.NextMessageId, Messenger.NextRequestId, new OctetString("myname"), new List<variable>{new Variable(new ObjectIdentifier("1.3.6.1.2.1.1.1.0"))}, priv, Messenger.MaxMessageSize, report); 

ISnmpMessage reply = request.GetResponse(60000, new IPEndPoint(IPAddress.Parse("192.168.1.2"), 161)); 

Hier können Sie sehen, gibt es die Authentifizierung und Privatsphäre in Get-Methode übergeben, weil wir Antrag auf V3 sind so Authentifizierung und Privatsphäre erforderlich ist. Sie können dies für V1 und V2 verwenden, aber es macht keinen Sinn, weil Authentifizierung und Privatsphäre für V1 und V2 nicht erforderlich ist.

Für mehr, siehe Here welche sind die neuen Funktionen in V3 hinzugefügt.

Verwandte Themen