首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# SNMP代理-表示MIB中的复杂类型

C# SNMP代理-表示MIB中的复杂类型
EN

Stack Overflow用户
提问于 2015-05-09 14:19:05
回答 1查看 693关注 0票数 4

我正在用C#编写我的第一个SNMP代理,我想通过SNMP请求公开一些系统事件信息。

在C#方面,所有系统事件都由一个简单的类表示:

代码语言:javascript
复制
public class MySystemEvent  
{  
    public int Id { get;set; }
    public string Message { get; set; }
    public DateTime Occurred { get; set; }
}

我希望将这些特定事件(由事件id确定)公开为MIB中的一个单独的节点,但不完全确定如何创建与上述类相对应的自定义ASN.1复杂类型。我知道我可以用序列来表示这些,但不确定我是否正确地使用了它们。

我到目前为止所做的事:

代码语言:javascript
复制
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

代码语言:javascript
复制
    - customSystemNode  
    - events
代码语言:javascript
复制
        - firstSpecificEvent 
            - eventId
            - eventMessage
            - eventOccurred

我想要添加的是具有相同结构的多个其他事件到" events“节点,例如,就在我希望拥有的firstSpecificEvent之后:

  • secondSpecificEvent
    • eventId
    • eventMessage
    • eventOccurred

如何在不为每个特定事件添加单独的eventId、eventMessage和eventOccurred对象类型定义的情况下做到这一点?是否可以定义允许以下内容的CustomEventComplexType?

代码语言:javascript
复制
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.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-11 12:28:28

我最终解决了这个问题,就像列克李建议的那样,创建了一个事件表。这样,对于行条目的定义,只需要一次对象类型定义。

代码语言:javascript
复制
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 }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30140985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档