【问题标题】:Info Agent's SNMP信息代理的 SNMP
【发布时间】:2011-06-09 02:50:56
【问题描述】:

我有一些问题:

在我的系统(例如 windows)中,有许多 DLL 扩展代理附加了 snmp 服务

当一个请求到达服务 snmp "Snmp.exe" 时,它会将请求发送给所有代理还是只发送一个?

我怎么知道他们中的哪一个可以回答请求?

谢谢

【问题讨论】:

    标签: snmp


    【解决方案1】:

    主要代理的工作是处理 SNMP 注册,每个 DLL 将注册它能够提供的信息。 SNMP 中的信息注册在由 OID 表示的树结构下。代理足够聪明,可以根据询问的传入 OID 知道哪个 DLL(或子代理)能够提供请求。

    您可以考虑阅读描述“AgentX”协议的RFC2741。虽然这里讨论的是协议而不是 DLL,但它在底层工作的基本方式应该非常相似。

    【讨论】:

    • +1 我完全同意 AgentX 在概念上与 Microsoft 允许 mib 扩展的方式不同。 AgentX 在他自己的进程链接中工作,通过 soket 连接到主代理。如果扩展代理中发生错误,Microsoft SNMP 代理就会失败。
    • 绝对正确。插件以非常不同的方式进行交互以实际交换数据。然而,主循环如何决定向谁询问基本上是相同的:它们持有一个注册列表,并尝试找出如何确定要发送哪个子片段(无论是内置代码、子代理还是插件)问到。 AgentX RFC 实际上很好地描述了这种架构。
    • 是的,我在Net-SNMP之上写了一个AgentX,我同意你的观点,全局概念类似,但技术结果不同。我刚刚编写了允许知道哪些 OID 由 DLL 提供服务的包装器。
    【解决方案2】:

    @Wes 响应正常。这里只是一个补充。如“How to add an SNMP extension agent to the NT registry”中所述,您可以在以下项指向的注册表项中找到 DLL 扩展:

    Windows Server NT4 到 Windows Server 2003 R2(工作站、W2K、XP):

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SNMP\Parameter\ExtensionAgents
    

    开始使用 Windows 2008 (Vista):

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SNMP\Parameters\ExtensionAgents
    

    每个 DLL 都公开 SnmpExtensionInit 函数,该函数将supportedView 报告为OID。

    BOOL WINAPI SnmpExtensionInit (DWORD dwTimeZeroReference,
                                   HANDLE *hPollForTrapEvent,
                                   AsnObjectIdentifier *supportedView);
    

    我编写了一个包装程序,它只是加载 DLL 并调用函数来报告响应,如果你愿意,可以下载并尝试slxSNMPInfo。抱歉,网站是法语,但 EXE 文件中的字符串是英语。

    【讨论】:

      猜你喜欢
      • 2011-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      相关资源
      最近更新 更多