1

我正在尝试编写一个使用 net-snmp 支持的 agentX 的 snmp 子代理。起初,我使用了 net-snmp FAQ 中的示例代码:

http://www.net-snmp.org/wiki/index.php/TUT:Writing_a_Subagent

从示例代码 ( example-demon.c,nstAgentSubagentObject.c,nstAgentSubagentObject.h ) 中,我构建了一个子代理,它可以使用 agentX 来执行 snmpget 和 snmpset。

我的问题是:从nstAgentSubagentObject.c中的代码中,有很多跟踪代码,如下所示:

DEBUGMSGTL(("nstAgentSubagentObject",
                "Initializing the nstAgentSubagentObject module\n"));

但是我在任何地方都看不到日志。

我试图启动 snmpd(snmp 的恶魔) snmpd -f -DnstAgentSubagentObject -Lf /tmp/snmp.log

但是我仍然看不到日志。谁能告诉我如何查看 DEBUGMSGTL 的日志?

4

3 回答 3

2

我可以设置标志:

-Dverbose

或者如果您想查看所有日志:

-Dall
于 2012-02-29T19:00:15.490 回答
1

snmpd当您启动它时,-D nstAgentSubagentObject您不想将该命令行选项传递给您的子代理,而不是一开始。

在本教程中,它建议使用以下命令启动子代理:

% ./mysubagent &

要启用更多调试消息,请尝试使用以下命令启动它:

% ./mysubagent -D nstAgentSubagentObject

如果我没记错的话,那应该将调试输出打印到控制台。-L如果您希望将其写入文件,则可以将其与选项结合使用。

于 2011-11-10T03:29:50.367 回答
1

仅供参考,您还可以将以下内容放入 snmp.conf 文件中并在其中调整选项:

debugTokens nstAgentSubagentObject
doDebugging 1

但是,另一个答案是正确的:您需要打开调试代码将被命中的位置,它位于子代理中(snmp.conf 文件将被两者读取)。

于 2011-11-11T16:06:05.627 回答