查看源代码 snmpc (snmp v5.18)
SNMP 工具包 MIB 编译器的接口函数
模块 snmpc
包含 SNMP 工具包 MIB 编译器的接口函数。
另请参阅
erlc(1)
snmpc(命令)
摘要
函数
检查 MIB 之间对象标识符和陷阱的多次使用。
生成一个 .hrl
文件,其中包含 MIB 中对象的 Erlang 常量定义。 .hrl
文件被命名为 <MibName>.hrl
。 MIB 必须已编译,并且存在于当前目录中。
函数
-spec compile(AtomFileNames | FileName) -> {ok, BinFileName} | {error, Reason} when AtomFileNames :: [atom()], FileName :: string(), BinFileName :: string(), Reason :: term().
等同于 compile/2
。
-spec compile(FileName, Options) -> {ok, BinFileName} | {error, Reason} when FileName :: string(), Options :: [Option], Option :: agent_capabilities | {db, volatile | persistent | mnesia} | {deprecated, boolean()} | description | {group_check, boolean()} | {i, [snmp:dir()]} | {il, [snmp:dir()]} | imports | {module, module()} | module_identity | module_compliance | no_defs | {outdir, snmp:dir()} | reference | relaxed_row_name_assign_check | {verbosity, snmp:verbosity()} | {warnings, boolean()} | {warnings_as_errors, boolean()}, BinFileName :: string(), Reason :: term().
编译指定的 MIB 文件 <FileName>.mib
。 编译后的文件 BinFileName
被命名为 <FileName>.bin
。
如果存在选项
agent_capabilities
,则指定 MIB 的 AGENT-CAPABILITIES 语句应包含在已编译的 mib 中(带有 mib-entry 记录)。agent-capabilitie 的 mib-entry 记录将包含reference
和modules
部分(此信息在assocList
字段中)。选项
db
指定默认检测应使用哪个数据库。默认值为
volatile
。选项
deprecated
指定是否应保留已弃用的定义。如果该选项为 false,则 MIB 编译器将忽略所有已弃用的定义。默认值为
true
。选项
description
指定是否包含 DESCRIPTION 字段的文本。默认情况下不包含,但是如果存在此选项,则会包含。
选项
group_check
指定 MIB 编译器是否应检查 OBJECT-GROUP 宏和 NOTIFICATION-GROUP 宏的正确性。默认值为
true
。选项
i
指定搜索导入(已编译)MIB 文件的路径。目录应为带有尾部目录分隔符的字符串。默认值为
["./"]
。选项
il
(include_lib) 也指定要搜索导入的 MIB 的目录列表。它假定目录名称中的第一个元素对应于一个 OTP 应用程序。编译器将找到当前安装的版本。例如,值 ["snmp/mibs/"] 将被替换为 ["snmp-3.1.1/mibs/"](或者系统中当前版本可能是什么)。当前目录和<snmp-home>/priv/mibs/
始终列在包含路径的最后。如果存在选项
imports
,则指定 MIB 的 IMPORT 语句应包含在已编译的 mib 中。如果存在选项
module
,则指定一个模块的名称,该模块为 MIB 实现所有检测函数。所有检测函数的名称必须与其实现的相应被管理对象相同。
如果存在选项
module_identity
,则指定 MIB 的 MODULE-IDENTITY 语句的 info 部分应包含在已编译的 mib 中。如果存在选项
module_compliance
,则指定 MIB 的 MODULE-COMPLIANCE 语句应包含在已编译的 mib 中(带有 mib-entry 记录)。module-compliance 的 mib-entry 记录将包含reference
和module
部分(此信息在assocList
字段中)。如果存在选项
no_defs
,则指定如果被管理对象没有检测函数,则不应使用默认检测函数,而是将其报告为错误,并且编译中止。选项
reference
指定是否包含在表定义中找到的 REFERENCE 字段的文本。默认情况下不包含,但是如果存在此选项,则会包含。引用文本将放置在表的 mib-entry 记录 (#me{}) 的 allocList 字段中。
如果存在选项
relaxed_row_name_assign_check
,则指定行名称分配检查不应严格按照 SMI(仅允许值 1)执行。使用此选项,允许所有大于零的值(>= 1)。这意味着该错误将转换为警告。默认情况下不包含,但是如果存在此选项,则会包含。
选项
verbosity
指定 SNMP mib 编译器的详细程度。即,是否应显示警告、信息、日志、调试和跟踪消息。默认值为
silence
。请注意,如果选项
warnings
为true
且选项verbosity
为silence
,则仍会显示警告消息。选项
warnings
指定是否应显示警告消息。默认值为
true
。如果存在选项
warnings_as_errors
,则指定是否应将警告视为错误。
MIB 编译器理解 SMIv1 和 SMIv2 MIB。它使用 MODULE-IDENTITY
语句来确定 MIB 是版本 1 还是版本 2。
也可以通过以下两个命令从 OS 命令行调用 MIB 编译器: erlc
和 snmpc
。
-spec is_consistent(FileNames) -> ok | {error, Reason} when FileNames :: [MibName], MibName :: string(), Reason :: term().
检查 MIB 之间对象标识符和陷阱的多次使用。
生成一个 .hrl
文件,其中包含 MIB 中对象的 Erlang 常量定义。 .hrl
文件被命名为 <MibName>.hrl
。 MIB 必须已编译,并且存在于当前目录中。
可以使用命令 erlc
从 OS 命令行调用 mib_to_hrl
生成器。 erlc
识别扩展名 .bin
,并为具有该扩展名的文件调用此函数。