我正在用C#编写我的第一个SNMP代理,我想通过SNMP请求公开一些系统事件信息。
在C#方面,所有系统事件都由一个简单的类表示:
public class MySystemEvent
{
public int Id { get;set; }
public string Message { get; set; }
public DateTime Occurred { get; set; }
}我希望将这些特定事件(由事件id确定)公开为MIB中的一个单独的节点,但不完全确定如何创建与上述类相对应的自定义ASN.1复杂类型。我知道我可以用序列来表示这些,但不确定我是否正确地使用了它们。
我到目前为止所做的事:
enterprise OBJECT IDENTIFIER ::= { private 1 }
penNode OBJECT IDENTIFIER ::= { enterprise <PEN> }
customSystemNode OBJECT IDENTIFIER ::= { penNode 1 }
events OBJECT IDENTIFIER ::= { customSystemNode 1 }
Event ::= SEQUENCE {
id Integer32,
message DisplayString,
occurred DateAndTime
}
firstSpecificEvent OBJECT-TYPE
SYNTAX Event
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"First specific event."
INDEX { eventId }
::= { events 1 }
eventId OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Event Id."
::= { firstSpecificEvent 1 }
eventMessage OBJECT-TYPE
SYNTAX DisplayString
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Event message."
::= { firstSpecificEvent 2 }
eventOccurred OBJECT-TYPE
SYNTAX DateAndTime
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Event occurred."
::= { firstSpecificEvent 3 }上面的MIB定义了以下树:
- customSystemNode
- events - firstSpecificEvent
- eventId
- eventMessage
- eventOccurred
我想要添加的是具有相同结构的多个其他事件到" events“节点,例如,就在我希望拥有的firstSpecificEvent之后:
如何在不为每个特定事件添加单独的eventId、eventMessage和eventOccurred对象类型定义的情况下做到这一点?是否可以定义允许以下内容的CustomEventComplexType?
firstSpecificEvent OBJECT-TYPE
SYNTAX CustomEventComplexType
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"First specific event."
::= { events 1 }
secondSpecificEvent OBJECT-TYPE
SYNTAX CustomEventComplexType
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Second specific event."
::= { events 2 }
thirdSpecificEvent OBJECT-TYPE
SYNTAX CustomEventComplexType
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Third specific event."
::= { events 3 }
etc.发布于 2015-05-11 12:28:28
我最终解决了这个问题,就像列克李建议的那样,创建了一个事件表。这样,对于行条目的定义,只需要一次对象类型定义。
enterprise OBJECT IDENTIFIER ::= { private 1 }
penNode OBJECT IDENTIFIER ::= { enterprise <PEN> }
customSystemNode OBJECT IDENTIFIER ::= { penNode 1 }
Event ::= SEQUENCE {
id Integer32,
message DisplayString,
occurred DateAndTime
}
eventTable OBJECT-TYPE
SYNTAX SEQUENCE OF Event
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Table containing event information."
::= { customSystemNode 1 }
eventTableRowEntry OBJECT-TYPE
SYNTAX Event
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A row entry in the event table."
INDEX { eventId }
::= { eventTable 1 }
eventId OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Event id."
::= { eventTableRowEntry 1 }
eventMessage OBJECT-TYPE
SYNTAX DisplayString
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Event message."
::= { eventTableRowEntry 2 }
eventOccurred OBJECT-TYPE
SYNTAX DateAndTime
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Event occurred timestamp."
::= { eventTableRowEntry 3 }https://stackoverflow.com/questions/30140985
复制相似问题