檢視原始碼 snmpc (snmp v5.18)

SNMP 工具組 MIB 編譯器的介面函式

模組 snmpc 包含 SNMP 工具組 MIB 編譯器的介面函式。

另請參閱

erlc(1)

snmpc(命令)

摘要

函式

等同於 compile/2

編譯指定的 MIB 檔案 <FileName>.mib。編譯後的檔案 BinFileName 名為 <FileName>.bin

檢查 MIB 之間是否有重複使用物件識別碼和陷阱。

為 MIB 中的物件產生一個具有 Erlang 常數定義的 .hrl 檔案。.hrl 檔案名為 <MibName>.hrl。MIB 必須先經過編譯,並且存在於當前目錄中。

函式

-spec compile(AtomFileNames | FileName) -> {ok, BinFileName} | {error, Reason}
                 when
                     AtomFileNames :: [atom()],
                     FileName :: string(),
                     BinFileName :: string(),
                     Reason :: term().

等同於 compile/2

連結到此函式

compile(FileName, Options)

檢視原始碼
-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-capabilities 的 mib-entry 記錄將在 assocList 欄位中包含 referencemodules 部分的資訊。

  • 選項 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 敘述的資訊部分應包含在已編譯的 MIB 中。

  • 如果存在選項 module_compliance,則表示 MIB 的 MODULE-COMPLIANCE 敘述應包含在已編譯的 MIB 中(使用 mib-entry 記錄)。module-compliance 的 mib-entry 記錄將在 assocList 欄位中包含 referencemodule 部分的資訊。

  • 如果存在選項 no_defs,則表示如果管理物件沒有檢測函式,則不應使用預設檢測函式,而是回報為錯誤,並且中止編譯。

  • 選項 reference 指定是否包含在表格定義中找到的 REFERENCE 欄位的文字。

    預設情況下不包含,但如果存在此選項,則將會包含。參考文字將放置在表格的 mib-entry 記錄 (#me{}) 的 allocList 欄位中。

  • 如果存在選項 relaxed_row_name_assign_check,則指定行名稱指派檢查不應嚴格按照 SMI(僅允許值 1)執行。使用此選項,所有大於零的值都允許 (>= 1)。這表示錯誤將轉換為警告。

    預設情況下不包含,但如果存在此選項,則將會包含。

  • 選項 verbosity 指定 SNMP MIB 編譯器的詳細程度。也就是說,是否應顯示警告、資訊、日誌、偵錯和追蹤訊息。

    預設值為 silence

    請注意,如果選項 warningstrue 且選項 verbositysilence,則仍將顯示警告訊息。

  • 選項 warnings 指定是否應顯示警告訊息。

    預設值為 true

  • 如果存在選項 warnings_as_errors,則指定是否應將警告視為錯誤。

MIB 編譯器可以理解 SMIv1 和 SMIv2 MIB。它使用 MODULE-IDENTITY 敘述來判斷 MIB 是版本 1 還是 2。

也可以透過以下兩個命令從 OS 命令列調用 MIB 編譯器:erlcsnmpc

  • erlc - erlc 會辨識副檔名 .mib,並為具有該副檔名的檔案調用 SNMP MIB 編譯器。選項 dbgroup_checkdeprecateddescriptionverbosityimportsmodule_identity 必須使用 +term 語法指定給 erlc

    有關詳細資訊,請參閱 erlc(1)

  • snmpc - snmpc 是一個 escript,它為 MIB 編譯器提供更傳統的介面。

    有關詳細資訊,請參閱 snmpc(command)

連結到此函式

is_consistent(FileNames)

檢視原始碼
-spec is_consistent(FileNames) -> ok | {error, Reason}
                       when FileNames :: [MibName], MibName :: string(), Reason :: term().

檢查 MIB 之間是否有重複使用物件識別碼和陷阱。

為 MIB 中的物件產生一個具有 Erlang 常數定義的 .hrl 檔案。.hrl 檔案名為 <MibName>.hrl。MIB 必須先經過編譯,並且存在於當前目錄中。

可以使用命令 erlc 從 OS 命令列調用 mib_to_hrl 產生器。erlc 會辨識副檔名 .bin,並為具有該副檔名的檔案調用此函式。