Разница API Sharpsnmp для SNMPv2 и SNMPv3

Я собираюсь использовать библиотеку shrarpsnmp для разработки Manager для устройств SNMPv2. Я не понимаю, какого рода API я должен использовать. Например, я хочу вызвать snmp get request для устройства. Существуют два способа сделать это:

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);

В чем разница между этими двумя методами? И который будет правильно использовать SNMPv2, или может быть использован?

2 ответа

Messenger.Get устарел в соответствии с веб-сайта разработчика.

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

и вот некоторая информация о GetRequestMessage

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

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);

Этот запрос предназначен для V1 и V2. Потому что аутентификация и конфиденциальность недоступны для V1 и V2. Так что используйте этот метод для V1 и 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));

Здесь вы можете видеть, что аутентификация и конфиденциальность передаются в методе Get, потому что мы запрашиваем V3, поэтому требуется аутентификация и конфиденциальность. Вы можете использовать это для V1 и V2, но это не имеет смысла, потому что аутентификация и конфиденциальность не требуются для V1 и V2.

Подробнее см. Здесь, которые являются новыми функциями, добавленными в V3.

Другие вопросы по тегам