Ссылка на браузер: https://www.ireasoning.com/download.shtml
Подробности настройки
- Консольное приложение .net core 8.0
- Используется непосредственная ссылка на библиотеку SnmpEngineHelper.Core
- Ниже приведен код
Код: Выделить всё
public static async Task Main(string[] args)
{
var manualEvent = new ManualResetEventSlim();
// TODO: this is a hack. review it later.
var engineId = ByteTool.Convert("80001F8880E9630000D61FF449");
var users = new UserRegistry();
users.Add(new OctetString("neither"), DefaultPrivacyProvider.DefaultPair);
users.Add(new OctetString("authen"),
new DefaultPrivacyProvider(new MD5AuthenticationProvider(new OctetString("authentication")))
{
EngineIds = new[] { new OctetString(engineId) }
});
if (DESPrivacyProvider.IsSupported)
{
users.Add(new OctetString("privacy"), new DESPrivacyProvider(new OctetString("privacyphrase"),
new MD5AuthenticationProvider(new OctetString("authentication"))));
}
var count = 0;
var trapv1 = new TrapV1MessageHandler();
trapv1.MessageReceived += WatcherTrapV1Received;
var trapv1Mapping = new HandlerMapping("v1", "TRAPV1", trapv1);
var trapv2 = new TrapV2MessageHandler();
trapv2.MessageReceived += WatcherTrapV2Received;
var trapv2Mapping = new HandlerMapping("v2,v3", "TRAPV2", trapv2);
var inform = new InformRequestMessageHandler();
var informMapping = new HandlerMapping("v2,v3", "INFORM", inform);
var store = new ObjectStore();
var v1 = new Version1MembershipProvider(new OctetString("public"), new OctetString("public"));
var v2 = new Version2MembershipProvider(new OctetString("public"), new OctetString("public"));
var v3 = new Version3MembershipProvider();
var membership = new ComposedMembershipProvider(new IMembershipProvider[] { v1, v2, v3 });
var handlerFactory = new MessageHandlerFactory(new[] { trapv1Mapping, trapv2Mapping, informMapping });
var pipelineFactory = new SnmpApplicationFactory( store, membership, handlerFactory);
var group = new EngineGroup(engineId);
var engine = new SnmpEngine(pipelineFactory, new Listener { Users = users }, group);
var daemonEndPoint = new IPEndPoint(IPAddress.Loopback, 40001);
engine.Listener.AddBinding(daemonEndPoint);
engine.Start();
try
{
var privacy =
new DefaultPrivacyProvider(new MD5AuthenticationProvider(new OctetString("authentication")));
var trap = new TrapV2Message(
VersionCode.V3,
1004947569,
234419641,
new OctetString("authen"),
new ObjectIdentifier("1.3.6"),
0,
new List(),
privacy,
0x10000,
new OctetString(ByteTool.Convert("80001F8880E9630000D61FF450")),
0,
0);
await trap.SendAsync(daemonEndPoint);
manualEvent.Wait();
Console.WriteLine(count == 0);
Console.WriteLine(new Counter32(1) == group.UnknownEngineId.Data);
}
finally
{
if (SnmpMessageExtension.IsRunningOnWindows)
{
engine.Stop();
}
}
}
private static void WatcherTrapV2Received(object sender, TrapV2MessageReceivedEventArgs e)
{
Console.WriteLine($"--------WatcherTrapV2Received {e.TrapV2Message.Version}------------------");
string dateTime = DateTime.Now.ToString("g");
Console.WriteLine($"{dateTime}: TRAP Sender: {e.Sender} / version {e.TrapV2Message.Version}: {e.TrapV2Message}");
//Debug.WriteLine($"MessageID: {e.TrapV2Message.Header.MessageId}");
foreach (var variable in e.TrapV2Message.Variables())
{
Console.WriteLine($"{dateTime}: Trap VarData: {variable}");
}
Console.WriteLine($"--------WatcherTrapV2Received {e.TrapV2Message.Version} End------------------");
}
private static void WatcherTrapV1Received(object sender, TrapV1MessageReceivedEventArgs e)
{
Console.WriteLine($"--------WatcherTrapV1Received {e.TrapV1Message.Version}------------------");
Console.WriteLine("TRAP version {0}; {1}", e.TrapV1Message.Version, e.TrapV1Message);
foreach (var variable in e.TrapV1Message.Variables())
{
Console.WriteLine(variable);
}
Console.WriteLine($"--------WatcherTrapV1Received {e.TrapV1Message.Version} End------------------");
}
Подробнее здесь: https://stackoverflow.com/questions/782 ... th-c-sharp