从我的程序中获取数据到snmpd

时间:2012-02-17 22:16:10

标签: snmp net-snmp

我想我已经错过了明显的,也许,但我迷失了一个好的答案。

我正在开发一个独立的程序,它将在一个硬件内的Linux(Ubuntu?)嵌入式PC上运行。我希望它成为SNMP与之对话的“事物”。好吧,如果没有编译我自己的SNMD“守护进程”代码并说服Linux让一般用户可以访问端口161,我想我会选择Net-SNMP的snmpd。我愿意接受更好的产品使用建议。 LGPL,BSD,麻省理工学院,许可证,请。

我在MIB上分别工作并分配OID等。我知道我想要设置和获取的变量等等。

我已阅读并重读了制作SNMP / snmpd代理和/或子代理的内容。我可以说,它们都被编译成snmp或作为共享库链接到它。正确?

那么,我如何让代理与在单独的一般用户会话中运行的sepaprate程序进行通信?有直接的技术可以使用吗? d总线? ppen()?命名管道?共享内存?临时文件? UDP端口?更好的东西?或者我真的想把我的程序变成.SO并让snmpd启动它吗?我假设在那一点上我会告诉snmpd在哪里打电话给我来获取/设置变量。正确?

谢谢!

1 个答案:

答案 0 :(得分:0)

“AgentX”协议是任意应用程序向正在运行的系统SNMP守护程序提供SNMP服务的一种方法。您的应用程序侦听161以外的某个端口(通常库会为您处理详细信息),系统snmpd会将您的OID请求转发给您的子代理。此方法不涉及将任何代码链接到系统 snmpd。

通常,更简单的方法是配置系统snmpd以运行脚本来获取或设置数据。如果您愿意,该脚本可以使用其他类型的IPC与您的应用程序进行通信(例如,对于HTTP服务器,例如JSON)。