snmp总结二:MIB语法
snmp总结二:MIB语法
MIB(Management Information Base,管理信息库)是 MO(Managed Object 管理对象)定义的集合。MIB 文件是按照 ASN.1 定义的文本文件。每个管理对象都对应一个节点,并且用 OID(Object Identifier)来标识;数据管理对象对应叶子节点;所有的管理对象形成了一棵管理树。
自定义 MIB 包含的内容有:模块信息、对象定义(OBJECT TYPE,包括标量对象和表对象)、陷阱定义(TRAP TYPE)。
MODULE-IDENTITY (根节点)
模块标识符,该定义添加了一个公共的标示段来对整个信息描述块进行顶层的文字描述,也就是根节点,以加强对管理 MIB 描述块的文档管理和控制,每个 MIB 定义中都会有该定义。如:
-- 1.3.6.1.4.1.9999 根节点
fiberhome MODULE-IDENTITY -- 根节点,企业信息
LAST-UPDATED "202209010000Z"
ORGANIZATION "FiberHome, LTD."
CONTACT-INFO
"Postal: No.88 Hubei Province, China
Tel: +86 xxxx
E-mail: xxxx@fiberhome.com"
DESCRIPTION
"The Structure of Management Information for the FiberHome enterprise."
REVISION "202209010000Z"
DESCRIPTION
"FH SNMP Start."::= { enterprises 9999 } -- assigned by IANA,尚未申请
OBJECT-IDENTITY(子树)
对象标识符,该定义用于给对象标示符的说明加上附加信息,包括状态,文字说明等,可用于对一组对象类型或一个表中几个参数的不同组合的意义的说明。如:
myBranch OBJECT IDENTIFIER ::= { parentBranch 10 }
其中 myBranch 是一个子树支,它定义在 parentBranch 树支下,“10”是子树 myBranch在父树支 parentBranch 下的一个唯一对象标识符,即通常所说的 OID。在 parentBranch 树支下,可以定义多个子树支,但子树支的名字和数字(如上的 10)不能重复,即必须是唯一的。
OBJECT-TYPE( 叶子)
3.1 标量
exampleObject1 OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Example:Integer32."
::= { exampleObject 1 }
以上的各部分解释如下:
(1)exampleObject1:这是被管对象的名字,ASN.1 句法要求所有对象的名字必须以小写字母开头,而且该名字在 MIB 中必须是唯一的。OBJECT-TYPE:这是一个每一个叶子对象的所必须的关键字。
(2)SYNTAX:被管对象类型的关键字,说明随后跟着的是一个类型。被管对象的类型,ASN.1 句法要求所有的对象类型必须以大写字母开头,其中已预定义了的类型有 Counter、Gauge、DisplayString、INTEGER 等等。
(3)MAX-ACCESS:被管对象的访问方式的关键字。访问方式可为如下列举值中之一:read-only、read-write、 no-accessible,SNMP 第 2 版中又新增了 read-create。
(4)STATUS:被管对象的状态的关键字。可取的值为:mandatory 、optional、obsolete、deprecate(SNMP 第 1 版中),current、obsolete、deprecate(SNMP 第 2 版)。
status 说明
mandatory 表示该对象的状态是必备的
optional 表示该对象的状态是可选的
obsolete 使用该值使得 MIB 的某些部分标记为过时,被标记为“废弃”的对象将从现行版本中删除,并在新的 MIB版本中标记为“过时”。
current 表示该对象的状态是当前可用的
(5)DESCRIPTION:对被管对象的功能、特征等等进行描述的关键字。
(6)(::=):包含此叶子对象的树支,即叶子对象的父亲必须是用“OBJECT IDENTIFIER”声明。同时说明在此父树支下的第几个叶子对象,这个数字在此父树支下必须是唯一的。一般都是从取 1 开始的。例如:“::={ myObject 22 }”,则在 myObject 树支下 22 必须是唯一的,否则在用 MIB 编译器进行编译时会提示有错。
除此之外,还有一些关键字:UNITS、INDEX、REFERENCE、DEFVAL 等等,分别代表被管对象的单位、索引、参考、缺省值。值得注意的是 INDEX 关键字在表对象定义中必须存在的,否则表内的对象不能使用。
3.2 表类型
表类型是一个特殊类型的声明,表内声明的对象称为列对象,表对象可以看作是一些标量对象的集合。利用SEQUENCE 和 SEQUENCE OF 定义表格和表格中的行, 通常来说,表格对象的名字后面加有后缀 Table,行对象的名字后面加有后缀 Entry。
simpleTable OBJECT-TYPE
SYNTAX SEQUENCE OF SimpleEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"这是一个表名为simpleTable的表对象."
::= { exampleObject 9 }
-- 1.3.6.1.4.1.9999.3.9.1
simpleEntry OBJECT-TYPE
SYNTAX SimpleEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Description."
INDEX { simpleTbColum1 }
::= { simpleTable 1 }
SimpleEntry ::= SEQUENCE {
simpleTbColum1 Integer32,
simpleTbColum2 Integer32,
}
(simpleTable)和(simpleEntry)中的 ACCESS 为 not-accessible,这是因为表和行对象没有叶子对象,因此不能被 SNMP 访问。ASN.1 句法中关于定义一个表的规则如下:
(1) 在表名的命名中,必须要有一个“Table”关键字,例如定义一 个表对象“simpleTable”
(2) 同样,在表对象下面的表格也须有一个“Entry”关键字,例如 “simpleEntry”。
(3) (simpleTbColum1)是表的列对象,(Integer32)是此列对象的类型 ,举例如下:
-- 1.3.6.1.4.1.9999.3.9.1.1
simpleTbColum1 OBJECT-TYPE
SYNTAX Integer32 (1..65536)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Description."
::= { simpleEntry 1 }
- 完整的示例
test.mib
TEST-MIB DEFINITIONS ::= BEGIN
IMPORTS
OBJECT-GROUP, MODULE-COMPLIANCE, NOTIFICATION-GROUP
FROM SNMPv2-CONF
enterprises, Integer32, Unsigned32, OBJECT-TYPE, MODULE-IDENTITY,
NOTIFICATION-TYPE
FROM SNMPv2-SMI
DisplayString
FROM SNMPv2-TC;
-- 企业
FiberHome OBJECT IDENTIFIER ::= { enterprises 5888 }
-- 产品型号或系列
FitON-DP48 OBJECT IDENTIFIER ::= { FiberHome 1 }
-- 系统信息
systemInformation OBJECT IDENTIFIER ::= { FitON-DP48 1 }
identManufacturer OBJECT-TYPE
SYNTAX DisplayString
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Manufacturer"
::= { systemInformation 1 }
identModel OBJECT-TYPE
SYNTAX DisplayString
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Model"
::= { systemInformation 2 }
identSN OBJECT-TYPE
SYNTAX DisplayString
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Serial Number"
::= { systemInformation 3 }
identSoftwareVersion OBJECT-TYPE
SYNTAX DisplayString
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"SoftwareVersion"
::= { systemInformation 4 }
-- 标量示例(只读、可读写)
Sensor OBJECT IDENTIFIER ::= { FitON-DP48 2 }
Rsensor1 OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"sensor read-only"
::= { Sensor 1 }
Rsensor2 OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"sensor read-only"
::= { Sensor 2 }
RWsensor1 OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"sensor read-write"
::= { Sensor 3 }
RWsensor2 OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"sensor read-write"
::= { Sensor 4 }
-- 表类型示例(温湿度传感器表)
temp_humidity OBJECT IDENTIFIER ::= { FitON-DP48 3 }
temp_humidityTable OBJECT-TYPE
SYNTAX SEQUENCE OF Temp_humidityEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Description."
::= { temp_humidity 1 }
temp_humidityEntry OBJECT-TYPE
SYNTAX Temp_humidityEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Description."
INDEX { thIndex }
::= { temp_humidityTable 1 }
Temp_humidityEntry ::=
SEQUENCE {
thIndex Integer32,
temperature Integer32,
humidity Integer32,
temperature_cal Integer32,
humidity_cal Integer32,
}
thIndex OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The index of temp_humidity sensor."
::= { temp_humidityEntry 1 }
temperature OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The temperature of sensor."
::= { temp_humidityEntry 2 }
humidity OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The humidity of sensor."
::= { temp_humidityEntry 3 }
temperature_cal OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"The sensor temperature calibration."
::= { temp_humidityEntry 4 }
humidity_cal OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"The sensor humidity calibration."
::= { temp_humidityEntry 5 }
END
snmp总结二:MIB语法的更多相关文章
- Azure Terraform(二)语法详解
一,引言 上篇文章开始,我们简单介绍了以下通过基础设施管理工具----- Terraform,通过它来统一管理复杂的云基础设施资源.作为入门演示,使用Terraform 部署Azure 资源组的方式直 ...
- Azure Bicep(二)语法简介
一,引言 上一篇文章有介绍到 Azure Bicep 的部署问题,文中也只是演示部署范围为 Sub,并将演示的 Azure Resource Group 到 Azure.给定 Bicep 文件,可以部 ...
- Lua 学习笔记(二)语法、类型、值
首先Lua执行的每一段代码都称之为“程序块”,一个程序块也就是一连串的语句或命令,例如一个源码文件或一行代码.Lua语句之间并不需要分隔符,如代码中的换行就不起任何作用,当然为了养成编码习惯当两条或者 ...
- Jade模板引擎学习(二)语法:代码、变量、循环、过滤器及mixin
Jade语法 一.代码 不会被缓冲代码 ul - for(var i=0; i; i++) li Jade Engine 会转换为: <ul> <li>Jade Engine& ...
- QML学习(二)——<QML语法>
一.Qml类型 QML类型分为三类:基本类型.QML对象类型以及JavaScript类型 1 基本类型 我们可以再qt帮助文档中搜索基本类型查看 基本类型的概念是相对于QML对象类型而言的,QML 对 ...
- 前端知识(二)05-Eslint语法规范检查-谷粒学院
目录 一.ESLint简介 二.启用ESLint 1.ESLint插件安装 2.插件的扩展设置 3.确认开启语法检查 三.ESLint规则说明 1.规则说明 2.语法规则 一.ESLint简介 ESL ...
- tn文本分析语言(二) 基本语法
tn是desert和tan共同开发的一种用于匹配,转写和抽取文本的语言.解释器使用Python实现,代码不超过1000行. 本文主要介绍tn的基本语法.高级内容可以参考其他篇章.使用这样的语法,是为了 ...
- MySQL与Oracle 差异比较之二基本语法
基本语法 编号 类别 ORACLE MYSQL 注释 1 变量的声明方式不同 li_index NUMBER := 0 DECLARE li_index INTEGER DEFAULT 0 1. my ...
- <二> jQuery 语法
通过jQuery你可以选择/查询html元素,并对它们进行操作.jQuery 使用的语法是 XPath 与 CSS 选择器语法的组合. $(this).hide() 隐藏当前html元素 $(&quo ...
- JSP编译成Servlet(二)语法树的遍历——访问者模式
语法树可以理解成是一种数据结构,假如某些语句已经被解析成一棵语法树,那么接下来就是要对此语法树进行处理,但考虑到不将处理操作与数据结构混合在一块,我们需要一种方法将其分离.其实对于语法树的处理最典型的 ...
随机推荐
- [每日算法] leetcode第2题:两数相加
leetcode第2题入口 题目描述 给你两个 非空 的链表,表示两个非负的整数.它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字. 请你将两个数相加,并以相同形式返回一个表 ...
- RabbitMQ集群部署(一)——单机模式部署
本文分享自天翼云开发者社区<RabbitMQ集群部署(一)--单机模式部署>,作者:芋泥麻薯 RabbitMQ是一种开源消息队列系统,是AMQP的标准实现,用erlang语言开发.Rabb ...
- AIops
How does AIOps work?With AIOps, your organization takes a more proactive approach to resolve IT oper ...
- Spring的基础结构和核心接口
目录 1.BeanDefinition 2.BeanDefinitionReader 3.BeanDefinitionRegistry 4.BeanFactory 5.ApplicationConte ...
- 基于注解的 AOP 配置
第一步:在 spring 配置文件中开启 spring 对注解 AOP 的支持 <!-- 开启 spring 对注解 AOP 的支持 --> <aop:aspectj-autopro ...
- 探秘Transformer系列之(30)--- 投机解码
探秘Transformer系列之(30)--- 投机解码 目录 探秘Transformer系列之(30)--- 投机解码 0x00 概述 0x01 背景 1.1 问题 1.2 自回归解码 0x02 定 ...
- 《基于改进Wallace树的Posit乘法单元优化》(一)
原文 文章通过增加特定的计数器.重新设计部分积求和阶段计数器布局 以及改进最终求和阶段使用的加法器,提出一种名为3L-Wallace树的改进Wallace树算法,有效减少了部分积求和的阶段数, 从而降 ...
- EFCore——树形结构篇
1.整体数据量不大的场景 参照:EntityFramework Linq 查询数据获得树形结构-YES开发框架网 (yesdotnet.com) 核心方法GetChildData,特点将所有的数据查到 ...
- Fiddler的安装和使用教程(详细)
一.安装 1.fiddler工具下载网址:http://www.telerik.com/download/fiddler. 2.运行 FiddlerSetup.exe一键完成安装. 3.安装成功后点击 ...
- 某些STL用法
STL大法好! stable_sort 基于归并排序,时间复杂度稳定同时并不会改变相对顺序,平替sort,用法一模一样.(可以过一些甚至卡sort的毒瘤,但是由于sort是均摊复杂度 \(O(nlog ...