3
我在C#中編寫我的第一個SNMP代理,我想通過SNMP GET請求公開一些系統事件信息。C#SNMP代理 - 代表MIB中的複雜類型
在C#側,所有的系統事件是由一個簡單的類表示:
public class MySystemEvent
{
public int Id { get;set; }
public string Message { get; set; }
public DateTime Occurred { get; set; }
}
我想暴露每個這些特定事件(事件ID確定)爲在MIB一個單獨的節點,但我不完全確定如何創建與上述類相對應的自定義ASN.1複雜類型。我知道我可以使用SEQUENCE來表示這些,但不知道我是否正確使用它們。
什麼我迄今所做的:
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定義爲以下三種:
- 私人
- 企業
- penNode
- customSystemNode 個
- 事件
- firstSpecificEvent
- EVENTID
- 事件消息
- eventOccurred
- firstSpecificEvent
我想添加的是與「events」節點具有相同結構的多個其他事件,例如,在firstSpecificEvent之後我想有:
- secondSpecificEvent
- EVENTID
- 事件消息
- eventOccurred
我如何在不增加單獨的事件ID,事件消息和eventOccurred每種特定事件的OBECT-TYPE定義? 是否可以定義一個允許以下內容的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.
你應該建立一個表。 –
@LexLi謝謝!這就是我最終做的事情,但知道這是正確的做法真是太好了。我會盡快爲更新的解決方案添加一個答案。 –