SNMP DateAndTime,空值的预期值

时间:2017-12-12 21:24:54

标签: snmp mib pysnmp

我正在使用SNMP的代理端,我有一个DateAndTime字段,其语法如下:

DateAndTime(OCTET STRING)(SIZE(8 | 11))。提示:2d-1d-1d,1d:1d:1d.1d,1a1d:1d

有问题的varBind返回某种类型错误的时间戳,(希望)永远不会发生。

所以我的问题是如果事件没有发生,代理应该返回什么。如果我返回一个空字符串,则技术上不符合约束条件。

我不是SNMP专家,所以这可能是可接受的吗?

将MIB更改为不同的定义/类型是可能的,如果这是我需要做的。

2 个答案:

答案 0 :(得分:1)

代理应该为传入请求返回错误,方法是将error-status设置为合适的值(例如genErr),并将error-index设置为varbind中的正确索引

PDU ::= SEQUENCE {
           request-id INTEGER (-214783648..214783647),

           error-status                -- sometimes ignored
               INTEGER {
                   noError(0),
                   tooBig(1),
                   noSuchName(2),      -- for proxy compatibility
                   badValue(3),        -- for proxy compatibility
                   readOnly(4),        -- for proxy compatibility
                   genErr(5),
                   noAccess(6),
                   wrongType(7),
                   wrongLength(8),
                   wrongEncoding(9),
                   wrongValue(10),
                   noCreation(11),
                   inconsistentValue(12),
                   resourceUnavailable(13),
                   commitFailed(14),
                   undoFailed(15),
                   authorizationError(16),
                   notWritable(17),
                   inconsistentName(18)
               },

           error-index                 -- sometimes ignored
               INTEGER (0..max-bindings),

           variable-bindings           -- values are sometimes ignored
               VarBindList
       }

答案 1 :(得分:-1)

MIB应该确切地定义在所有情况下会发生什么。这是代理人和经理之间的合同。如果没有,那么它是一个有缺陷的MIB。如果它是某人正在开发的MIB,则需要修复它。如果是公共MIB,请告诉我们哪个,我们可以查看。