【问题标题】:Writing an SNMP Agent for Windows: SnmpAPI.Lib or MgmtAPI.lib?为 Windows 编写 SNMP 代理:SnmpAPI.Lib 还是 MgmtAPI.lib?
【发布时间】:2011-10-16 01:30:27
【问题描述】:

我需要在 Windows 上为我们公司的产品编写一个 SNMP 代理。

SnmpApi.lib - 据我了解,SnmpApi.lib 允许您从头开始创建完整的代理,并且可能需要更多的工作。但是,这会接管 SNMP 端口,并且不允许其他代理运行,并且需要更长的编码时间。

MgmtAPI.lib - 这个库将允许创建对已经运行的 Windows SNMP 服务的扩展,并且似乎是创建 Windows 代理的一种更优雅的方法。但是,我发现很少有关于如何编写这样一个代理的官方 MS 文档/示例。我还在另一个论坛上读到这可能已被弃用。

我在野外看过一本名为“Windows NT SNMP”的 Oreilly 书籍,但我听说它使用了已弃用的库或技术。不知道是不是真的。

我也见过像 SNMP++ 这样的库,它们使用 SnmpAPI.lib 创建代理,但同样,这似乎不像通过 MgmtAPI.lib 在系统上允许多个子代理那样优雅。

几个问题:

我听说 MgmtAPI.lib 是旧版/已弃用。这是真的吗?

创建 Windows SNMP 代理的最佳做法是什么?

我应该使用什么库?

还有其他建议吗?

谢谢!

【问题讨论】:

    标签: windows snmp agent


    【解决方案1】:

    默认的 windows SNMP 堆栈和框架的功能非常有限。不幸的是,您的最佳解决方案可能在其他地方找到(其中有许多外部库和堆栈)。如果您想要一个模块化并允许子代理的,那么请查看支持 AgentX 协议的堆栈。这是一个标准化的 SNMP 子代理协议,可以让多个子代理连接到一个主代理。

    但无论您做什么,请选择支持 SNMPv3 的堆栈并使用其中的安全性。

    如果您想要一个已知在 Windows 上运行良好的随机堆栈示例,请尝试 Net-SNMP,它在“替换 Windows 上的 SNMP 堆栈”人群中相当流行。但我也有偏见并与该项目相关,所以我会说:“没关系;选择任何同时支持 AgentX 和 SNMPv3 的堆栈”。

    【讨论】:

    • 谢谢你,韦斯。您是否知道 Net-SNMP 是否支持 MS SNMP 代理服务支持的标准 Windows MIB?我很想改用 Net-SNMP,但我不确定它是否适合我。我实际上是在使用 Net-SNMP 和 smilint 来完成我的一些 MIB 工作。
    • 它不支持任何特定于 MS 的 MIB,但它确实支持 MS 本身支持的更多标准 MIB。最坏的情况是,如果您在不同的端口上运行 MS 代理,您实际上可以让 Net-SNMP 主代理“代理”它运行的任何 Net-SNMP 不支持的东西。请参阅有关“代理”的 snmpd.conf 手册页。
    • 我可以试试。现在,我正在编写我的 MIB 并试图在代表 MIB 的 C++ 子代理 DLL 中获得设计良好的数据结构。这是非常令人沮丧和耗时的。我可以更轻松地使用 Net-SNMP 套件来创建 Net-SNMP 子代理和 MIB 编译器吗?我的经理还担心看不到 MS 代理当前报告的标准 RFC MIB。
    • 好吧,在两者上运行 snmpwalk 并比较差异。您可以在 10 分钟内完成,并获得一份相当详细的报告供您的经理查看。
    • Net-SNMP 附带的mib2c 程序将mib 表转换成许多东西('c' 用词不当......它应该命名为mib2anything)。有关想法和示例,请参阅 Net-SNMP wiki。
    猜你喜欢
    • 2010-09-13
    • 1970-01-01
    • 1970-01-01
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多