【问题标题】:What’s the meaning of “General variable binding error” in SNMP4J?SNMP4J 中的“General variable binding error”是什么意思?
【发布时间】:2021-09-11 05:55:35
【问题描述】:

我在一台机器上使用gettable成功查询了一些数据,但是当我使用相同的命令查询另一台机器时,它返回“General variable binding error”。如何解决?我可以在另一台机器上使用 Net-SNMP 在命令行中查询数据。

【问题讨论】:

    标签: snmp snmp4j


    【解决方案1】:

    该错误消息在SnmpConstants.java 中定义为SNMP_ERROR_MESSAGES 的一部分,

    https://github.com/kaazing/snmp4j/blob/60518cb185e7738f94a9c754e85fa220afeffe6d/src/org/snmp4j/mp/SnmpConstants.java

    您可以看到错误消息仅在PDU.java中使用,

    https://github.com/kaazing/snmp4j/blob/60518cb185e7738f94a9c754e85fa220afeffe6d/src/org/snmp4j/PDU.java

    并且仅在 SNMP 响应消息的错误状态为 5,即 GenErr 时使用。

    不幸的是,这是 SNMP 代理在遇到无法归类为其他错误状态的异常时报告的模棱两可的错误。

    所以在你的情况下,

    1. 尝试使用 SNMP v2 执行查询,它通常会提供更好的错误状态代码(v2 引入了更多代码)。
    2. 接受GenErr 可能发生的事实并处理它(或忽略它)。

    由于返回GenErr 是代理端行为,因此您在经理端没有其他选择。

    【讨论】:

    • 我用同样的命令,然后可以在另一台机器上查询到正确的结果。似乎是机器的原因。但是另一方面,Net-SNMP也可以在另一台机器上返回正确的结果这台机器。
    • @flower 如果你愿意,你可以捕获网络数据包进行比较。但是这样的代理端错误可能会带来糟糕的结果(尤其是间歇性错误),但只有代理开发人员/供应商知道如何以及为什么。
    猜你喜欢
    • 2014-03-19
    • 2021-10-11
    • 2011-04-21
    • 1970-01-01
    • 2015-06-25
    • 2011-08-18
    • 1970-01-01
    • 2014-04-21
    • 1970-01-01
    相关资源
    最近更新 更多