首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在.net下定义管理信息库和发送SNMP陷阱

在.net下定义管理信息库和发送SNMP陷阱
EN

Stack Overflow用户
提问于 2012-01-28 06:11:54
回答 6查看 10.9K关注 0票数 7

我在C#的.net下为一家公司开发了一个特殊的应用程序,它已经使用了很多年。现在它是在上开发的,我必须实现的一个主要新功能是在一些警报情况下通过向它发送SNMP陷阱来将它与另一个软件集成。

我是一个有经验的开发人员,但我从未使用过SNMP。我用谷歌搜索了一整天,但对这个话题越来越困惑。我没有一个明确的“起点”。我了解SNMP的基础知识,但我不知道从哪里开始实施以及如何开始实施。

我有我应该通过SNMP陷阱发送的数据,它有大约10个属性,一些日期,数字和字符串。我应该在此属性上创建MIB定义。稍后,我应该在我的应用程序中实现一个基于此MIB发送SNMP陷阱的功能。

该项目是在c#的.net 4下开发的。我发现这个库看起来很有前途:http://sharpsnmplib.codeplex.com/,它有一些关于发送SNMP陷阱的示例。

我的问题是:从哪里开始?如何定义MIB文件?我知道它们是一些必须编译的文本文件,但在这个主题上没有找到任何MIB编辑器和帮助。

如有任何帮助,我们不胜感激!

谢谢!

EN

回答 6

Stack Overflow用户

发布于 2012-01-28 11:00:52

我不是一个专家,但有经验,在同一地点,你是,并最终找到了我的项目足够的东西。

我使用了您之前引用的codeplex库,并且发现它非常好用。这里有一些指导您了解http://sharpsnmplib.codeplex.com/的方法。

  • 据我所知,当您需要执行snmpget和snmpset
    • 时,需要MIB文件这在某种程度上是您通知服务器和服务器返回到您的客户端,要求更详细的信息,如果您需要共享有关您的snmpget的大量信息,则可能需要MIB文件。

  • 如果你所需要的只是陷阱,你可以这样做,运行
    • snmpd.exe,它将像snmp服务器一样接收从你的application.
    • Write发送的陷阱一个类似于snmptrapd.exe的程序并发送你的traps.

链接http://www.net-snmp.org/wiki/index.php/TUT:snmptrap是一个很好的获取基本理解和获取更多库信息的链接。

编辑:刚刚错过了一分。如果对snmp使用get和set,则需要MIB文件。如果你只有陷阱,你可能不需要它。

票数 3
EN

Stack Overflow用户

发布于 2012-02-05 16:03:39

在SNMP V2 MIB中,陷阱被描述为通知。请在此处查看此类MIB的完整示例:http://tools.cisco.com/Support/SNMP/do/BrowseMIB.do?local=en&mibName=CISCO-EPM-NOTIFICATION-MIB

票数 1
EN

Stack Overflow用户

发布于 2012-02-07 16:35:32

显然,您使用的是Windows操作系统来处理SNMP,因此您需要创建自定义SNMP扩展代理,以便在系统中添加自定义SNMP OID和相应的陷阱。每个OID都会在字面上显示一个变量,您可以在其中存储信息。Here is an example of such DLL。据我所知,MIB文件仅在Windows中作为SNMP代理的参考,不能用于添加新的OID,除非创建自定义SNMP代理。

当您有了自定义SNMP代理DLL时,您需要在注册表中将其指向。可以这样做(示例):

代码语言:javascript
复制
[HKEY_LOCAL_MACHINE\SOFTWARE\Symbol\MyAgent\CurrentVersion]
"Pathname"="C:\\MyCustomAgent\\MyAgent.dll"

;Add number of agent to the list (max num registered + 1)
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SNMP\Parameters\ExtensionAgents]
"10"="SOFTWARE\\Symbol\\MyAgent\\CurrentVersion"

在此之后,您将需要重新启动SNMP服务。如果一切正常,您将能够使用新的自定义OID来设置\获取一些数据。

为了读/写你的SNMP变量,你需要使用SNMP管理器。我通常使用Sharpsnmplib来做这件事。还有一些在调试过程中非常有用的图形用户界面管理器,例如:iReasoning MIB Browser

下面是使用该库示例代码:

代码语言:javascript
复制
using System.Collections.Generic;
using System.Net;
using System.Net.Sockets;
// SNMP Lib references
using Lextm.SharpSnmpLib;
using Mono.Options;
using Lextm.SharpSnmpLib.Messaging;
using Lextm.SharpSnmpLib.Security;
...
List vList = new List();
ISnmpData data;
data = new OctetString("test"); // variable to add in to string OID
Variable test = new Variable(new ObjectIdentifier("1.3.6.1.2.1.1.6.0"), data); // OID
vList.Add(test);
VersionCode versionH = VersionCode.V2; // SNMP protocol version to use
IPAddress ipH;
IPAddress.TryParse("127.0.0.1", out ipH);
IPEndPoint receiverH = new IPEndPoint(ipH, 161);
foreach (Variable variable in
        Messenger.Set(versionH, receiverH, new OctetString("private"), vList, 10))// set variable
        // Arguments: (ver of SNMP, IP, group, iList containing OID and variable, timeoout)
        {
            // output variable
        }
...

您还可以在technet上阅读有关在Windows操作系统中使用SNMP的文章:link。这篇文章并不新鲜,但可能有助于您理解如何在Windows中使用SNMP。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9040751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档