如何从 net-snmp 创建 snmp 代理
我想使用 net-snmp 为 PowerPC 板实现 SNMP 代理。 之前它是使用 SMASH 实现的。 SMASH 有一个解析器 它可以读取 MIB 并生成 C 代码(空白函数实现)
我如何开始?
I want to implement SNMP-agent for PowerPC board using net-snmp.
Previously it was implemented using SMASH. SMASH has a parser
which could read MIB and generate C code (blank function imlementation)
How do I get started?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
尝试从 net- 查看 mib2c 工具 - SNMP。它将从 MIB 生成 snmp 代理 C 代码。然后您只需满足 SNMP 请求的返回值。响应 SNMP 请求(get、set、get-next)的骨架是通过生成自动完成的。
Try to look at mib2c tool from net-snmp. It will generate the snmp agent C code from the MIB. Then you have to only fulfill the return values to SNMP requests. Skeleton of responding to SNMP requests (get, set, get-next) are automatically done by generating.
您是否查看编写 MIB 模块 教程。
Do you have a look to Writing a MIB module tutorial.
我对此采取了不同的方法。为了更好地与我的 C++ 生态系统集成,并获得更大的灵活性(特别是在规模上),我:
snmptranslate
的结果(即 MIB 树)解析为一堆用于代码中的 C++ 映射和其他容器这使得通知生成变得微不足道(我只需要一些生成 varbind 的变体类型,一些 PDU 构造,然后将其余的留给 Net-SNMP 的传输功能),尽管对于请求,我必须自己实现表遍历(以及 GetNext/ GetBulk/Set并不是微不足道的,除非您避免所有表,或者至少避免复合索引表。
结果是一个快速、健壮且可扩展的 SNMP 代理,具有易于维护和扩展的富有表现力的代码。
您并没有说您正在使用 C++,但这确实让您了解如何挑选 Net-SNMP 功能,而不必购买其整个生态系统。
请注意,我不知道 SNMPv3 如何适合这个模型;在这成为我的问题之前,我聪明地离开了公司。 :)
I took a different approach to this. In order to better integrate with my C++ ecosystem, and to obtain greater flexibility (particularly at scale), I:
snmptranslate
(that is, the MIB tree) into a bunch of C++ maps and other containers for use in codeThis made notification generation trivial (I just needed some variant types to generate varbinds, a bit of PDU construction and then left the rest to Net-SNMP's transport feature), although for requests I did then have to implement table walking myself (and GetNext/GetBulk/Set are not trivial unless you avoid all tables, or at least avoid composite-index tables).
The result is a fast, robust and scalable SNMP agent with expressive code that's easy to maintain and to extend.
You don't say you're using C++, but this does give an idea of how you can cherry-pick Net-SNMP functionality without necessarily buying into its entire ecosystem.
Do note that I have no idea how SNMPv3 would fit into this model; I cleverly left the company before it became my problem. :)