gpt4 book ai didi

snmp - 如何使用RowStatus?

转载 作者:行者123 更新时间:2023-12-02 10:33:08 27 4
gpt4 key购买 nike

我正在编写一个 SNMP 管理器和一个来自 MIB 的模拟 SNMP 代理(以测试管理器)。我有一个类似于下面的表,经理应该能够添加/删除行。使用 RowStatus 执行此操作的惯用方法是什么? RowStatus 是否先设置? PDU 中可以包含其他 OID 吗?

我最初的用例是表在启动时为空。因此,如果我发送这样的 SET PDU:

createStuffEntry.1.1.1 = 1
createStuffEntry.2.1.1 = 1
createStuffEntry.3.1.1 = 99
createStuffEntry.4.1.1 = "Dustbunnies"
createStuffEntry.5.1.1 = 5

这适用于下面的定义吗?如果省略 cRowStatus 会发生什么?

createStuffTable OBJECT-TYPE
SYNTAX SEQUENCE OF CreateStuffEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"A table for creating stuff."
::= { parentGroup 1 }

createStuffEntry OBJECT-TYPE
SYNTAX CreateStuffEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"An entry for building a stuff to create."
INDEX { cPlanID, cID }
::= { createStuffTable 1 }

CreateStuffEntry ::=
SEQUENCE {
cPlanID
INTEGER,
cID
INTEGER,
cTemplateID
INTEGER,
cStuffName
DisplayString,
cRowStatus
RowStatus
}

cPlanID OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-write
STATUS mandatory
DESCRIPTION
"The plan ID (cpPlanID)"
::= { createStuffEntry 1 }

cID OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-write
STATUS mandatory
DESCRIPTION
"The table entry index."
::= { createStuffEntry 2 }

cTemplateID OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-write
STATUS mandatory
DESCRIPTION
"The ID of the stuff template to create this stuff from."
::= { createStuffEntry 3 }

cStuffName OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-write
STATUS mandatory
DESCRIPTION
"The stuff name."
::= { createStuffEntry 4 }


cRowStatus OBJECT-TYPE
SYNTAX RowStatus
ACCESS read-write
STATUS current
DESCRIPTION
"This OID uses six main statuses:
active(1) is in use and available in stuffTable
notinService(2) it is present but not yet created
notReady(3) it is present but missing info
createAndGo(4) create stuff in stuffTable. Row will be
added to this table if necessary.
createAndWait(5) add stuff row to this table
destroy(6) will remove the stuff row

This OID is used to add/remove rows for stuff creation.
It can also be used to determine if a stuff has been
created successfully."
::= { createStuffEntry 5 }

请注意,这是使用 RowStatus 作为定义类型的 SMI v1 MIB,类似于 here 中描述的。因此,读创建是隐含的,而不是在这里声明。

最佳答案

RowStatus 文本约定实际上为代理的实现方式提供了相当大的余地。因此,管理器必须支持这两种方式,而代理必须仅支持一种(但可以支持两种):

  1. 连续 PDU:
    1. 将行状态变量设置为“createAndWait”
    2. 设置您想要设置的所有列(在一个或多个 PDU 中)
    3. 将行状态变量设置为“事件”
  2. 将行状态变量设置为“createAndGo”,并将您需要设置的**所有**变量包含到单个 PDU 中

不幸的是,经理需要聪明并知道如何与支持其中一方的代理交谈。人们普遍认为,管理者比弱小的代理人更大,有更多的空间来解决问题。不过,许多小型设备仅支持上面的#2。

关于snmp - 如何使用RowStatus?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4891988/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com