我的观察结果如下。我可以对任意多个不同的 oid 运行任意多次 SNMP get 请求,请求将返回值。但是一旦运行 GetNext 请求,我就会看到
NET-SNMP version 5.9.1 AgentX subagent connected
registered debug token agentx/subagent, 1
我尝试使用 snmpd 配置选项 maxGetbulkRepeats 和 maxGetbulkResponses,它们似乎有时(并非总是)可以解决 snmpwalk 的问题,但手动 getNext 请求仍然存在问题。
我真的不知道该如何解决这个问题。除了上面发布的错误之外,我没有看到任何错误日志,尽管我遇到过几次这样的情况:
lock in _callback_lock sleeps more than 100 milliseconds in snmp_unregister_callback
netsnmp_assert lock_holded < 100 failed callback.c:143 _callback_lock()
但是,当主代理和子代理同时关闭时,这似乎是一种竞争条件,因此很可能是由于导致代理断开连接的任何问题引起的。
我正在开发的 snmp 代理使用带有 net-snmp 库 (v5.9.1) 的 c++。我使用 mib 浏览器并在 ubuntu CLI 上运行 snmp 请求时也遇到了同样的问题。
欢迎任何有关调试的建议!