檢視原始碼 snmpc (snmp v5.18)
SNMP 工具組 MIB 編譯器的介面函式
模組 snmpc
包含 SNMP 工具組 MIB 編譯器的介面函式。
另請參閱
erlc(1)
snmpc(命令)
摘要
函式
檢查 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
。
-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
欄位中包含reference
和modules
部分的資訊。選項
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
欄位中包含reference
和module
部分的資訊。如果存在選項
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
。
erlc
-erlc
會辨識副檔名.mib
,並為具有該副檔名的檔案調用 SNMP MIB 編譯器。選項db
、group_check
、deprecated
、description
、verbosity
、imports
和module_identity
必須使用+term
語法指定給erlc
。有關詳細資訊,請參閱
erlc(1)
。snmpc
-snmpc
是一個 escript,它為 MIB 編譯器提供更傳統的介面。有關詳細資訊,請參閱 snmpc(command)。
-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
,並為具有該副檔名的檔案調用此函式。