檢視原始碼 snmpm (snmp v5.18)
SNMP 工具組管理器的介面函式
模組 snmpm
包含 SNMP 管理器的介面函式。
摘要
類型
值類型根據項目而定,依照
完成 (代理) 註冊的時間。
是用來識別請求的唯一詞彙。
實作 snmpm_user 行為的模組。
是唯一的非空字串。
是用來識別使用者的唯一詞彙。
值類型根據項目而定,依照
o - 'OBJECT IDENTIFIER'
函式
擷取代理設定。
非同步 get-request
。
非同步 get-bulk-request
(請參閱 RFC1905)。
非同步 get-next-request
。
非同步 set-request
。
備份管理器處理的持久資料。
取消先前的非同步請求。
取消先前要求在 SNMP 管理器啟動時收到通知的請求。
變更稽核追蹤日誌的日誌大小。 應用程式必須設定為使用稽核追蹤日誌功能。 請參閱「核心參考手冊」中的 disk_log(3),以取得如何變更日誌大小的說明。
關閉 SNMP 管理器的監控。
這個公用程式函式用於建立從下列接收到的錯誤原因的格式化 (易於列印) 字串
傳回包含管理器相關資訊的清單 (字典)。 資訊包括統計計數器、每個處理序的雜項資訊 (例如,記憶體配置) 等。
將 Mib
載入到管理器。 MibName
是 Mib 的名稱,包括找到已編譯 Mib 的路徑。 例如,
等同於 log_to_io/7
。
等同於 log_to_io/7
。
等同於 log_to_io/7
。
等同於 log_to_io/7
。
等同於 log_to_io/7
。
將稽核追蹤日誌轉換為可讀取的格式,並在 stdio 上列印。 LogName
預設為 "snmpm_log"。 LogFile
預設為 "snmpm.log"。
等同於 log_to_txt/8
。
等同於 log_to_txt/8
。
等同於 log_to_txt/8
。
等同於 log_to_txt/8
。
等同於 log_to_txt/8
。
等同於 log_to_txt/8
。
將稽核追蹤日誌轉換為可讀取的文字檔。 OutFile
預設為 "./snmpm_log.txt"。 LogName
預設為 "snmpm_log"。 LogFile
預設為 "snmpm.log"。
監控 SNMP 管理器。 如果發生損毀,呼叫 (監控) 程序會收到 'DOWN' 訊息 (如需詳細資訊,請參閱 erlang 模組)。
將別名轉換為其 OID。
當 SNMP 管理器啟動時,要求通知 (訊息)。
將 OID 轉換為其別名。
擷取 OID 的類型 (asn1 bertype)。
明確指示管理器使用 UserId
作為負責的使用者來處理此代理。
註冊負責特定代理的管理員實體 (= 使用者)。
註冊負責特定代理的受監控管理員實體 (= 使用者)。
明確指示管理器處理此 USM 使用者。 請注意,還有另一種方法可以執行相同的動作:將 usm 使用者新增至管理器組態檔 (請參閱 usm.conf)。
重新啟動指示的處理序 (What
)。 請注意,重新啟動處理序並非沒有風險,因此應謹慎使用。
變更執行階段稽核追蹤日誌類型。
同步 get-request
。
同步 get-bulk-request
(請參閱 RFC1905)。
同步 get-next-request
。
同步 set-request
。
從管理器卸載 Mib
。 MibName
是 Mib 的名稱,包括找到已編譯 Mib 的路徑。 例如,
取消註冊使用者。
取消註冊此 USM 使用者。
更新 usm 使用者設定。
擷取 usm 使用者設定。
設定指定處理序的詳細資訊。 對於最低的詳細資訊 silence
,不會列印任何內容。 詳細資訊越高,列印的內容就越多。
取得所有已註冊代理或特定使用者註冊的所有代理的清單。
取得載入到管理器的所有 Mib 的清單。
取得所有已註冊使用者身分識別的清單。
取得所有已註冊 usm 使用者的清單。
取得具有引擎 ID EngineID
的所有已註冊 usm 使用者的清單。
類型
-type agent_config() :: {engine_id, snmp:engine_id()} | {address, inet:ip_address()} | {port, inet:port_number()} | {tdomain, snmp:tdomain()} | {community, snmp:community()} | {timeout, register_timeout()} | {max_message_size, snmp:mms()} | {version, snmp:version()} | {sec_model, snmp:sec_model()} | {sec_name, snmp:sec_name()} | {sec_level, snmp:sec_level()}.
-type agent_config_item() ::
engine_id | address | port | tdomain | community | timeout | max_message_size | version |
sec_model | sec_name | sec_level.
值類型根據項目而定,依照
engine_id
- 代理的引擎 ID。值類型:engine_id()
address
- 代理的 IP 位址。值類型:ip_address()
port
- 代理的連接埠號碼。值類型:port_number()
tdomain
- 傳輸網域。值類型:tdomain()
community
- 社群。值類型:community()
timeout
- 註冊逾時。max_message_size
- 訊息的最大訊息大小。值類型:mms()
version
- 與此代理通訊時使用的 SNMP 版本。值類型:version()
sec_model
- 安全性模型。值類型:sec_model()
sec_name
- 安全性名稱。值類型:sec_name()
sec_level
- 安全性層級。值類型:sec_level()
-type pdu_type() :: snmp:pdu_type() | trappdu.
-type register_timeout() :: pos_integer() | snmp:snmp_timer().
完成 (代理) 註冊的時間。
-opaque request_id()
是用來識別請求的唯一詞彙。
-type snmp_reply() :: {snmp:error_status(), snmp:error_index(), [snmp:varbind()]}.
-type snmpm_user() :: module().
實作 snmpm_user 行為的模組。
-type target_name() :: string().
是唯一的非空字串。
-type user_id() :: term().
是用來識別使用者的唯一詞彙。
-type usm_config_item() :: sec_name | auth | auth_key | priv | priv_key.
值類型根據項目而定,依照
sec_name
- 安全性名稱。值類型:
snmp:sec_name()
auth
- 驗證協定。auth_key
- 驗證金鑰。priv
- 隱私權協定。priv_key
- 隱私權金鑰。
-type value_type() :: o | i | u | g | s | s | b | ip | op | c32 | c64 | tt.
o - 'OBJECT IDENTIFIER'
i - 'INTEGER'
u - 'Unsigned32
g - 'Unsigned32'
s - 'OCTET STRING'
b - 'BITS'
ip - 'IpAddress'
op - 'Opaque'
c32 - 'Counter32'
c64 - 'Counter64'
tt - 'TimeTicks'
-type var_and_val() :: {OID :: snmp:oid(), ValueType :: value_type(), Value :: term()} | {OID :: snmp:oid(), Value :: term()}.
函式
-spec agent_info(TargetName, Item) -> {ok, Value} | {error, Reason} when TargetName :: target_name(), Item :: agent_config_item(), Value :: term(), Reason :: term().
擷取代理設定。
-spec async_get2(UserId, TargetName, Oids) -> {ok, ReqId} | {error, Reason} when UserId :: user_id(), TargetName :: target_name(), Oids :: [snmp:oid()], ReqId :: request_id(), Reason :: term().
等同於 async_get2/4
。
-spec async_get2(UserId, TargetName, Oids, SendOpts) -> {ok, ReqId} | {error, Reason} when UserId :: user_id(), TargetName :: target_name(), Oids :: [snmp:oid()], SendOpts :: [SendOpt], SendOpt :: {context, snmp:context_name()} | {timeout, pos_integer()} | {community, snmp:community()} | {sec_model, snmp:sec_model()} | {sec_name, snmp:sec_name()} | {sec_level, snmp:sec_level()} | {max_message_size, snmp:mms()} | {extra, term()}, ReqId :: request_id(), Reason :: term().
非同步 get-request
。
如果收到回覆,將透過呼叫 snmpm_user
回呼函式 handle_pdu
傳遞給使用者。
傳送選項 timeout
指定請求有效的時間長度(超過此時間後,管理器可以自由刪除它)。
傳送選項 extra
指定傳遞給 net-if 處理程序的不透明資料結構。此應用程式中包含的 net-if 處理程序,除了一種例外情況外,不會使用此資訊,因此它唯一的用途(在使用內建 net-if 時)是追蹤。唯一的例外情況是:任何以 snmpm_extra_info_tag
作為第一個元素的元組都保留供內部使用。
某些傳送選項(community
、sec_model
、sec_name
、sec_level
和 max_message_size
)是覆寫選項
。也就是說,對於此請求,它們會覆寫註冊代理程式時所做的任何組態。
-spec async_get_bulk2(UserId, TargetName, NonRep, MaxRep, Oids) -> {ok, ReqId} | {error, Reason} when UserId :: user_id(), TargetName :: target_name(), NonRep :: non_neg_integer(), MaxRep :: non_neg_integer(), Oids :: [snmp:oid()], ReqId :: request_id(), Reason :: term().
等同於 async_get_bulk2/6
。
-spec async_get_bulk2(UserId, TargetName, NonRep, MaxRep, Oids, SendOpts) -> {ok, ReqId} | {error, Reason} when UserId :: user_id(), TargetName :: target_name(), NonRep :: non_neg_integer(), MaxRep :: non_neg_integer(), Oids :: [snmp:oid()], SendOpts :: [SendOpt], SendOpt :: {context, snmp:context_name()} | {timeout, pos_integer()} | {community, snmp:community()} | {sec_model, snmp:sec_model()} | {sec_name, snmp:sec_name()} | {sec_level, snmp:sec_level()} | {max_message_size, snmp:mms()} | {extra, term()}, ReqId :: request_id(), Reason :: term().
非同步 get-bulk-request
(請參閱 RFC1905)。
如果收到回覆,將透過呼叫 snmpm_user
回呼函式 handle_pdu
傳遞給使用者。
傳送選項 timeout
指定請求有效的時間長度(超過此時間後,管理器可以自由刪除它)。
傳送選項 extra
指定傳遞給 net-if
處理程序的不透明資料結構。此應用程式中包含的 net-if
處理程序不會使用此資訊,因此在此組態中(在使用內建 net-if
時),它唯一的用途是追蹤。
某些傳送選項(community
、sec_model
、sec_name
、sec_level
和 max_message_size
)是覆寫選項
。也就是說,對於此請求,它們會覆寫註冊代理程式時所做的任何組態。
-spec async_get_next2(UserId, TargetName, Oids) -> {ok, ReqId} | {error, Reason} when UserId :: user_id(), TargetName :: target_name(), Oids :: [snmp:oid()], ReqId :: request_id(), Reason :: term().
等同於 async_get_next2/4
。
-spec async_get_next2(UserId, TargetName, Oids, SendOpts) -> {ok, ReqId} | {error, Reason} when UserId :: user_id(), TargetName :: target_name(), Oids :: [snmp:oid()], SendOpts :: [SendOpt], SendOpt :: {context, snmp:context_name()} | {timeout, pos_integer()} | {community, snmp:community()} | {sec_model, snmp:sec_model()} | {sec_name, snmp:sec_name()} | {sec_level, snmp:sec_level()} | {max_message_size, snmp:mms()} | {extra, term()}, ReqId :: request_id(), Reason :: term().
非同步 get-next-request
。
如果收到回覆,將透過呼叫 snmpm_user
回呼函式 handle_pdu
傳遞給使用者。
傳送選項 timeout
指定請求有效的時間長度(超過此時間後,管理器可以自由刪除它)。
傳送選項 extra
指定傳遞給 net-if
處理程序的不透明資料結構。此應用程式中包含的 net-if
處理程序,除了一種例外情況外,不會使用此資訊,因此它唯一的用途(在使用內建 net-if
時)是追蹤。唯一的例外情況是:任何以 snmpm_extra_info_tag
作為第一個元素的元組都保留供內部使用。
某些傳送選項(community
、sec_model
、sec_name
、sec_level
和 max_message_size
)是覆寫選項
。也就是說,對於此請求,它們會覆寫註冊代理程式時所做的任何組態。
-spec async_set2(UserId, TargetName, VarsAndVals) -> {ok, ReqId} | {error, Reason} when UserId :: user_id(), TargetName :: target_name(), VarsAndVals :: [var_and_val()], ReqId :: request_id(), Reason :: term().
等同於 async_set2/4
。
-spec async_set2(UserId, TargetName, VarsAndVals, SendOpts) -> {ok, ReqId} | {error, Reason} when UserId :: user_id(), TargetName :: target_name(), VarsAndVals :: [var_and_val()], SendOpts :: [SendOpt], SendOpt :: {context, snmp:context_name()} | {timeout, pos_integer()} | {community, snmp:community()} | {sec_model, snmp:sec_model()} | {sec_name, snmp:sec_name()} | {sec_level, snmp:sec_level()} | {max_message_size, snmp:mms()} | {extra, term()}, ReqId :: request_id(), Reason :: term().
非同步 set-request
。
回覆將透過呼叫 snmpm_user
回呼函式 handle_pdu
傳遞給使用者。
傳送選項 timeout
指定請求有效的時間長度(超過此時間後,管理器可以自由刪除它)。
當 var_and_val() 是 {oid(), value()} 時,管理器會根據已載入的 MIB 做出有根據的猜測。
傳送選項 extra
指定傳遞給 net-if 處理程序的不透明資料結構。此應用程式中包含的 net-if 處理程序,除了一種例外情況外,不會使用此資訊,因此它唯一的用途(在使用內建 net-if 時)是追蹤。唯一的例外情況是:任何以 snmpm_extra_info_tag
作為第一個元素的元組都保留供內部使用。
某些傳送選項(community
、sec_model
、sec_name
、sec_level
和 max_message_size
)是覆寫選項
。也就是說,對於此請求,它們會覆寫註冊代理程式時所做的任何組態。
備份管理器處理的持久資料。
BackupDir 不能與 DbDir 相同。
-spec cancel_async_request(UserId, ReqId) -> ok | {error, Reason} when UserId :: user_id(), ReqId :: request_id(), Reason :: term().
取消先前的非同步請求。
取消先前要求在 SNMP 管理器啟動時收到通知的請求。
-spec change_log_size(NewSize) -> ok | {error, Reason} when NewSize :: snmp:log_size(), Reason :: term().
變更稽核追蹤日誌的日誌大小。 應用程式必須設定為使用稽核追蹤日誌功能。 請參閱「核心參考手冊」中的 disk_log(3),以取得如何變更日誌大小的說明。
只要不刪除記錄檔,此變更就是永久的。這表示記錄檔大小會跨重新開機記住。
-spec demonitor(Ref) -> true when Ref :: reference().
關閉 SNMP 管理器的監控。
等同於 format_reason/2
。
-spec format_reason(Prefix, Reason) -> FReason when Prefix :: non_neg_integer() | string(), Reason :: term(), FReason :: string().
這個公用程式函式用於建立從下列接收到的錯誤原因的格式化 (易於列印) 字串
- 如果任何同步/非同步 get/get-next/set/get-bulk 函式傳回
{error, Reason}
,則傳回的Reason
值。 - handle_error 使用者回呼函式中的
Reason
參數。
Prefix
應為縮排字串(例如,空格列表)或正整數(將用於建立該長度的縮排字串)。
傳回包含管理器相關資訊的清單 (字典)。 資訊包括統計計數器、每個處理序的雜項資訊 (例如,記憶體配置) 等。
-spec load_mib(MibName) -> ok | {error, Reason} when MibName :: snmp:mib_name(), Reason :: term().
將 Mib
載入到管理器。 MibName
是 Mib 的名稱,包括找到已編譯 Mib 的路徑。 例如,
Dir = code:priv_dir(my_app) ++ "/mibs/",
snmpm:load_mib(Dir ++ "MY-MIB").
-spec log_to_io(LogDir) -> ok | {ok, Cnt} | {error, Reason} when LogDir :: snmp:dir(), Cnt :: {NumOK, NumERR}, NumOK :: non_neg_integer(), NumERR :: pos_integer(), Reason :: term().
等同於 log_to_io/7
。
-spec log_to_io(LogDir, Block) -> ok | {ok, Cnt} | {error, Reason} when LogDir :: snmp:dir(), Block :: boolean(), Cnt :: {NumOK, NumERR}, NumOK :: non_neg_integer(), NumERR :: pos_integer(), Reason :: term(); (LogDir, Mibs) -> ok | {ok, Cnt} | {error, Reason} when LogDir :: snmp:dir(), Mibs :: [snmp:mib_name()], Cnt :: {NumOK, NumERR}, NumOK :: non_neg_integer(), NumERR :: pos_integer(), Reason :: term().
等同於 log_to_io/7
。
-spec log_to_io(LogDir, Mibs, Block) -> ok | {ok, Cnt} | {error, Reason} when LogDir :: snmp:dir(), Mibs :: [snmp:mib_name()], Block :: boolean(), Cnt :: {NumOK, NumERR}, NumOK :: non_neg_integer(), NumERR :: pos_integer(), Reason :: term(); (LogDir, Mibs, LogName) -> ok | {ok, Cnt} | {error, Reason} when LogDir :: snmp:dir(), Mibs :: [snmp:mib_name()], LogName :: string(), Cnt :: {NumOK, NumERR}, NumOK :: non_neg_integer(), NumERR :: pos_integer(), Reason :: term().
等同於 log_to_io/7
。
-spec log_to_io(LogDir, Mibs, LogName, Block) -> ok | {ok, Cnt} | {error, Reason} when LogDir :: snmp:dir(), Mibs :: [snmp:mib_name()], LogName :: string(), Block :: boolean(), Cnt :: {NumOK, NumERR}, NumOK :: non_neg_integer(), NumERR :: pos_integer(), Reason :: term(); (LogDir, Mibs, LogName, LogFile) -> ok | {ok, Cnt} | {error, Reason} when LogDir :: snmp:dir(), Mibs :: [snmp:mib_name()], LogName :: string(), LogFile :: string(), Cnt :: {NumOK, NumERR}, NumOK :: non_neg_integer(), NumERR :: pos_integer(), Reason :: term().
等同於 log_to_io/7
。
-spec log_to_io(LogDir, Mibs, LogName, LogFile, Block) -> ok | {ok, Cnt} | {error, Reason} when LogDir :: snmp:dir(), Mibs :: [snmp:mib_name()], LogName :: string(), LogFile :: string(), Block :: boolean(), Cnt :: {NumOK, NumERR}, NumOK :: non_neg_integer(), NumERR :: pos_integer(), Reason :: term(); (LogDir, Mibs, LogName, LogFile, Start) -> ok | {ok, Cnt} | {error, Reason} when LogDir :: snmp:dir(), Mibs :: [snmp:mib_name()], LogName :: string(), LogFile :: string(), Start :: null | snmp:log_time(), Cnt :: {NumOK, NumERR}, NumOK :: non_neg_integer(), NumERR :: pos_integer(), Reason :: term().
等同於 log_to_io/7
。
-spec log_to_io(LogDir, Mibs, LogName, LogFile, Block, Start) -> ok | {ok, Cnt} | {error, Reason} when LogDir :: snmp:dir(), Mibs :: [snmp:mib_name()], LogName :: string(), LogFile :: string(), Block :: boolean(), Start :: null | snmp:log_time(), Cnt :: {NumOK, NumERR}, NumOK :: non_neg_integer(), NumERR :: pos_integer(), Reason :: term(); (LogDir, Mibs, LogName, LogFile, Start, Stop) -> ok | {ok, Cnt} | {error, Reason} when LogDir :: snmp:dir(), Mibs :: [snmp:mib_name()], LogName :: string(), LogFile :: string(), Start :: null | snmp:log_time(), Stop :: null | snmp:log_time(), Cnt :: {NumOK, NumERR}, NumOK :: non_neg_integer(), NumERR :: pos_integer(), Reason :: term().
等同於 log_to_io/7
。
-spec log_to_io(LogDir, Mibs, LogName, LogFile, Block, Start, Stop) -> ok | {ok, Cnt} | {error, Reason} when LogDir :: snmp:dir(), Mibs :: [snmp:mib_name()], LogName :: string(), LogFile :: string(), Block :: boolean(), Start :: null | snmp:log_time(), Stop :: null | snmp:log_time(), Cnt :: {NumOK, NumERR}, NumOK :: non_neg_integer(), NumERR :: pos_integer(), Reason :: term().
將稽核追蹤日誌轉換為可讀取的格式,並在 stdio 上列印。 LogName
預設為 "snmpm_log"。 LogFile
預設為 "snmpm.log"。
Block
引數表示在轉換期間是否應封鎖記錄檔。當轉換大型記錄檔時,這可能很有用(否則記錄檔可能會在轉換期間換行)。預設為 true
。
Start
和 Stop
表示應轉換哪些記錄檔項目,從何時 (Start
) 到何時 (Stop
)。Start = null
=> 從記錄檔開頭開始。Stop = null
=> 在記錄檔結尾停止轉換。預設為 Start = null
和 Stop = null
(整個記錄檔)。
如需詳細資訊,請參閱 snmp:log_to_io/7
。
等同於 log_to_txt/8
。
-spec log_to_txt(LogDir :: snmp:dir(), Block :: boolean()) -> snmp:void(); (LogDir :: snmp:dir(), Mibs :: [snmp:mib_name()]) -> snmp:void().
等同於 log_to_txt/8
。
-spec log_to_txt(LogDir :: snmp:dir(), Mibs :: [snmp:mib_name()], Block :: boolean()) -> snmp:void(); (LogDir :: snmp:dir(), Mibs :: [snmp:mib_name()], OutFile :: file:filename()) -> snmp:void().
等同於 log_to_txt/8
。
-spec log_to_txt(LogDir :: snmp:dir(), Mibs :: [snmp:mib_name()], OutFile :: file:filename(), Block :: boolean()) -> snmp:void(); (LogDir :: snmp:dir(), Mibs :: [snmp:mib_name()], OutFile :: file:filename(), LogName :: string()) -> snmp:void().
等同於 log_to_txt/8
。
-spec log_to_txt(LogDir :: snmp:dir(), Mibs :: [snmp:mib_name()], OutFile :: file:filename(), LogName :: string(), Block :: boolean()) -> snmp:void(); (LogDir :: snmp:dir(), Mibs :: [snmp:mib_name()], OutFile :: file:filename(), LogName :: string(), LogFile :: string()) -> snmp:void().
等同於 log_to_txt/8
。
-spec log_to_txt(LogDir :: snmp:dir(), Mibs :: [snmp:mib_name()], OutFile :: file:filename(), LogName :: string(), LogFile :: string(), Block :: boolean()) -> snmp:void(); (LogDir :: snmp:dir(), Mibs :: [snmp:mib_name()], OutFile :: file:filename(), LogName :: string(), LogFile :: string(), Start :: null | snmp:log_time()) -> snmp:void().
等同於 log_to_txt/8
。
-spec log_to_txt(LogDir :: snmp:dir(), Mibs :: [snmp:mib_name()], OutFile :: file:filename(), LogName :: string(), LogFile :: string(), Block :: boolean(), Start :: null | snmp:log_time()) -> snmp:void(); (LogDir :: snmp:dir(), Mibs :: [snmp:mib_name()], OutFile :: file:filename(), LogName :: string(), LogFile :: string(), Start :: null | snmp:log_time(), Stop :: null | snmp:log_time()) -> snmp:void().
等同於 log_to_txt/8
。
log_to_txt(LogDir, Mibs, OutFile, LogName, LogFile, Block, Start, Stop)
檢視原始碼 (自 OTP R16B03 起)-spec log_to_txt(LogDir :: snmp:dir(), Mibs :: [snmp:mib_name()], OutFile :: file:filename(), LogName :: string(), LogFile :: string(), Block :: boolean(), Start :: snmp:log_time(), Stop :: snmp:log_time()) -> snmp:void().
將稽核追蹤日誌轉換為可讀取的文字檔。 OutFile
預設為 "./snmpm_log.txt"。 LogName
預設為 "snmpm_log"。 LogFile
預設為 "snmpm.log"。
Block
引數表示在轉換期間是否應封鎖記錄檔。當轉換大型記錄檔時,這可能很有用(否則記錄檔可能會在轉換期間換行)。預設為 true
。
Start
和 Stop
表示應轉換哪些記錄檔項目,從何時 (Start
) 到何時 (Stop
)。Start = null
=> 從記錄檔開頭開始。Stop = null
=> 在記錄檔結尾停止轉換。預設為 Start = null
和 Stop = null
(整個記錄檔)。
如需詳細資訊,請參閱 snmp:log_to_txt/8
。
-spec monitor() -> MRef when MRef :: reference().
監控 SNMP 管理器。 如果發生損毀,呼叫 (監控) 程序會收到 'DOWN' 訊息 (如需詳細資訊,請參閱 erlang 模組)。
-spec name_to_oid(AliasName) -> {ok, OIDs} | {error, Reason} when AliasName :: atom(), OIDs :: [snmp:oid()], Reason :: term().
將別名轉換為其 OID。
請注意,別名名稱在 MIB 內是唯一的,因此當將多個 MIB 載入到管理器時,可能會有多個相同別名名稱的實例。
-spec notify_started(Timeout) -> Pid when Timeout :: pos_integer(), Pid :: pid().
當 SNMP 管理器啟動時,要求通知 (訊息)。
Timeout
是請求有效的時間。此值必須大於零。
Pid
是處理 SNMP 管理器啟動監管的處理程序。當管理器啟動後,將從此處理程序向客戶端傳送完成訊息:{snmpm_started, Pid}
。如果 SNMP 管理器未及時啟動,將向客戶端傳送逾時訊息:{snmpm_start_timeout, Pid}
。
依賴 SNMP 管理器的客戶端應用程式將使用此函式,以便在管理器啟動時收到通知。在兩種情況下,此函式很有用
- 在系統啟動期間,當客戶端應用程式可能在 SNMP 管理器之前啟動,但依賴於它,因此必須等待它啟動時。
- 當 SNMP 管理器當機時,依賴的客戶端應用程式必須等待 SNMP 管理器重新啟動後才能重新連線。
此函式會傳回代表客戶端應用程式執行監管的處理程序 pid()。請注意,客戶端應用程式已連結至此處理程序。
此函式與監視函式搭配使用。
-spec oid_to_name(OID) -> {ok, AliasName} | {error, Reason} when OID :: snmp:oid(), AliasName :: atom(), Reason :: term().
將 OID 轉換為其別名。
-spec oid_to_type(OID) -> {ok, Type} | {error, Reason} when OID :: snmp:oid(), Type :: atom(), Reason :: term().
擷取 OID 的類型 (asn1 bertype)。
-spec register_agent(UserId, TargetName, Config) -> ok | {error, Reason} when UserId :: user_id(), TargetName :: target_name(), Config :: [ConfigEntry], ConfigEntry :: {Item, Value}, Item :: agent_config_item(), Value :: term(), Reason :: term().
明確指示管理器使用 UserId
作為負責的使用者來處理此代理。
呼叫以指示管理器應處理此代理程式。當使用者預先知道管理器應處理哪些代理程式時,會使用此函式。請注意,還有另一種方法可以執行相同的動作:將代理程式新增至管理器組態檔(請參閱agents.conf)。
TargetName
是非空字串,唯一識別代理程式。
Val
的類型取決於 Item
。
[mandatory] engine_id = engine_id()
[mandatory] address = inet:ip_address() % Depends on tdomain
[optional] port = inet:port_number()
[optional] tdomain = snmp:tdomain()
[optional] community = snmp:community()
[optional] timeout = register_timeout()
[optional] max_message_size = snmp:mms()
[optional] version = snmp:version()
[optional] sec_model = snmp:sec_model()
[optional] sec_name = snmp:sec_name()
[optional] sec_level = snmp:sec_level()
請注意,如果未提供 tdomain
,則會使用預設值 transportDomainUdpIpv4
。
請注意,如果未提供 port
且 taddress
不包含連接埠號碼,則會使用預設值。
-spec register_user(UserId, Module, Data) -> ok | {error, Reason} when UserId :: user_id(), Module :: snmpm_user(), Data :: term(), Reason :: term().
等同於 register_user/4
。
-spec register_user(UserId, Module, Data, DefaultAgentConfig) -> ok | {error, Reason} when UserId :: user_id(), Module :: snmpm_user(), Data :: term(), DefaultAgentConfig :: [DefaultConfigEntry], DefaultConfigEntry :: {Item, Value}, Item :: agent_config_item(), Value :: term(), Reason :: term().
註冊負責特定代理的管理員實體 (= 使用者)。
Module
是回呼模組(snmpm_user
行為),每當發生任何事件(偵測到的代理程式、傳入的回覆或傳入的陷阱/通知)時都會呼叫此模組。
Data
是不透明的資料結構,不會由管理器檢查,此結構將包含在對 Module
回呼模組 (snmpm_user
行為) 的所有回呼呼叫中。
當此使用者註冊代理程式時,引數 DefaultAgentConfig
會用作預設值。
請注意,此操作(註冊使用者)可能已作為節點組態的結果完成。(請參閱 users.conf)。
-spec register_user_monitor(UserId, Module, Data) -> ok | {error, Reason} when UserId :: user_id(), Module :: snmpm_user(), Data :: term(), Reason :: term().
-spec register_user_monitor(UserId, Module, Data, DefaultAgentConfig) -> ok | {error, Reason} when UserId :: user_id(), Module :: snmpm_user(), Data :: term(), DefaultAgentConfig :: [DefaultConfigEntry], DefaultConfigEntry :: {Item, Value}, Item :: agent_config_item(), Value :: term(), Reason :: term().
註冊負責特定代理的受監控管理員實體 (= 使用者)。
將監控執行註冊的處理程序。這表示如果該處理程序應該終止,則該使用者處理程序註冊的所有代理程式都將取消註冊。所有未完成的請求都將取消。
Module
是回呼模組(snmpm_user
行為),每當發生任何事件(偵測到的代理程式、傳入的回覆或傳入的陷阱/通知)時都會呼叫此模組。
Data
是不透明的資料結構,不會由管理器檢查,此結構將包含在對 Module
回呼模組 (snmpm_user
行為) 的所有回呼呼叫中。
當此使用者註冊代理程式時,引數 DefaultAgentConfig
會用作預設值。
-spec register_usm_user(EngineID, UserName, Config) -> ok | {error, Reason} when EngineID :: snmp:engine_id(), UserName :: snmp:usm_name(), Config :: [ConfigEntry], ConfigEntry :: {Item, Value}, Item :: usm_config_item(), Value :: term(), Reason :: term().
明確指示管理器處理此 USM 使用者。 請注意,還有另一種方法可以執行相同的動作:將 usm 使用者新增至管理器組態檔 (請參閱 usm.conf)。
-spec restart(What) -> snmp:void() when What :: net_if.
重新啟動指示的處理序 (What
)。 請注意,重新啟動處理序並非沒有風險,因此應謹慎使用。
-spec set_log_type(NewType) -> {ok, OldType} | {error, Reason} when NewType :: snmp:atl_type(), OldType :: snmp:atl_type(), Reason :: term().
變更執行階段稽核追蹤日誌類型。
請注意,這不會影響組態檔定義的應用程式組態,因此重新啟動節點會將組態還原為那些檔案中的內容。
此函式主要在測試/偵錯情境中很有用。
-spec sync_get2(UserId, TargetName, Oids) -> {ok, SnmpReply, Remaining} | {error, Reason} when UserId :: user_id(), TargetName :: target_name(), Oids :: [snmp:oid()], SnmpReply :: snmp_reply(), Remaining :: non_neg_integer(), Reason :: {send_failed, ReqId, ActualReason} | {invalid_sec_info, SecInfo, SnmpInfo} | term(), ReqId :: request_id(), ActualReason :: term(), SecInfo :: {SecTag, ExpectedValue, ReceivedValue}, SecTag :: atom(), ExpectedValue :: term(), ReceivedValue :: term(), SnmpInfo :: term().
等同於 sync_get2/4
。
-spec sync_get2(UserId, TargetName, Oids, SendOpts) -> {ok, SnmpReply, Remaining} | {error, Reason} when UserId :: user_id(), TargetName :: target_name(), Oids :: [snmp:oid()], SendOpts :: [SendOpt], SendOpt :: {context, snmp:context_name()} | {timeout, pos_integer()} | {community, snmp:community()} | {sec_model, snmp:sec_model()} | {sec_name, snmp:sec_name()} | {sec_level, snmp:sec_level()} | {max_message_size, snmp:mms()} | {extra, term()}, SnmpReply :: snmp_reply(), Remaining :: non_neg_integer(), Reason :: {send_failed, ReqId, ActualReason} | {invalid_sec_info, SecInfo, SnmpInfo} | term(), ReqId :: request_id(), ActualReason :: term(), SecInfo :: {SecTag, ExpectedValue, ReceivedValue}, SecTag :: atom(), ExpectedValue :: term(), ReceivedValue :: term(), SnmpInfo :: term().
同步 get-request
。
Remaining
是給定(或預設)逾時時間的剩餘時間。
當 Reason 為 {send_failed, ...} 時,表示 net-if
程序無法傳送(get-request
)訊息。這可能是因為許多原因造成,例如編碼錯誤。在這種情況下,ActualReason 是實際的原因。
傳送選項 extra
指定傳遞給 net-if
處理程序的不透明資料結構。此應用程式中包含的 net-if
處理程序,除了一種例外情況外,不會使用此資訊,因此它唯一的用途(在使用內建 net-if
時)是追蹤。唯一的例外情況是:任何以 snmpm_extra_info_tag
作為第一個元素的元組都保留供內部使用。
某些傳送選項(community
、sec_model
、sec_name
、sec_level
和 max_message_size
)是覆寫選項
。也就是說,對於此請求,它們會覆寫註冊代理程式時所做的任何組態。
關於 SnmpInfo
,請參閱使用者回呼函式 handle_report。
-spec sync_get_bulk2(UserId, TargetName, NonRep, MaxRep, Oids) -> {ok, SnmpReply, Remaining} | {error, Reason} when UserId :: user_id(), TargetName :: target_name(), NonRep :: non_neg_integer(), MaxRep :: non_neg_integer(), Oids :: [snmp:oid()], SnmpReply :: snmp_reply(), Remaining :: non_neg_integer(), Reason :: {send_failed, ReqId, ActualReason} | {invalid_sec_info, SecInfo, SnmpInfo} | term(), ReqId :: request_id(), ActualReason :: term(), SecInfo :: {SecTag, ExpectedValue, ReceivedValue}, SecTag :: atom(), ExpectedValue :: term(), ReceivedValue :: term(), SnmpInfo :: term().
等同於 sync_get_bulk2/6
。
-spec sync_get_bulk2(UserId, TargetName, NonRep, MaxRep, Oids, SendOpts) -> {ok, SnmpReply, Remaining} | {error, Reason} when UserId :: user_id(), TargetName :: target_name(), NonRep :: non_neg_integer(), MaxRep :: non_neg_integer(), Oids :: [snmp:oid()], SendOpts :: [SendOpt], SendOpt :: {context, snmp:context_name()} | {timeout, pos_integer()} | {community, snmp:community()} | {sec_model, snmp:sec_model()} | {sec_name, snmp:sec_name()} | {sec_level, snmp:sec_level()} | {max_message_size, snmp:mms()} | {extra, term()}, ReqId :: request_id(), SnmpReply :: snmp_reply(), Remaining :: non_neg_integer(), Reason :: {send_failed, ReqId, ActualReason} | {invalid_sec_info, SecInfo, SnmpInfo} | term(), ReqId :: request_id(), ActualReason :: term(), SecInfo :: {SecTag, ExpectedValue, ReceivedValue}, SecTag :: atom(), ExpectedValue :: term(), ReceivedValue :: term(), SnmpInfo :: term().
同步 get-bulk-request
(請參閱 RFC1905)。
Remaining
是給定(或預設)逾時時間的剩餘時間。
當 Reason 為 {send_failed, ...} 時,表示 net-if
程序無法傳送訊息。這可能是因為許多原因造成,例如編碼錯誤。在這種情況下,ActualReason 是實際的原因。
傳送選項 extra
指定傳遞給 net-if
處理程序的不透明資料結構。此應用程式中包含的 net-if
處理程序,除了一種例外情況外,不會使用此資訊,因此它唯一的用途(在使用內建 net-if
時)是追蹤。唯一的例外情況是:任何以 snmpm_extra_info_tag
作為第一個元素的元組都保留供內部使用。
某些傳送選項(community
、sec_model
、sec_name
、sec_level
和 max_message_size
)是覆寫選項
。也就是說,對於此請求,它們會覆寫註冊代理程式時所做的任何組態。
關於 SnmpInfo
,請參閱使用者回呼函式 snmpm_user:handle_report/3
。
-spec sync_get_next2(UserId, TargetName, Oids) -> {ok, SnmpReply, Remaining} | {error, Reason} when UserId :: user_id(), TargetName :: target_name(), Oids :: [snmp:oid()], SnmpReply :: snmp_reply(), Remaining :: non_neg_integer(), Reason :: {send_failed, ReqId, ActualReason} | {invalid_sec_info, SecInfo, SnmpInfo} | term(), ReqId :: request_id(), ActualReason :: term(), SecInfo :: {SecTag, ExpectedValue, ReceivedValue}, SecTag :: atom(), ExpectedValue :: term(), ReceivedValue :: term(), SnmpInfo :: term().
等同於 sync_get_next2/4
。
-spec sync_get_next2(UserId, TargetName, Oids, SendOpts) -> {ok, SnmpReply, Remaining} | {error, Reason} when UserId :: user_id(), TargetName :: target_name(), Oids :: [snmp:oid()], SendOpts :: [SendOpt], SendOpt :: {context, snmp:context_name()} | {timeout, pos_integer()} | {community, snmp:community()} | {sec_model, snmp:sec_model()} | {sec_name, snmp:sec_name()} | {sec_level, snmp:sec_level()} | {max_message_size, snmp:mms()} | {extra, term()}, SnmpReply :: snmp_reply(), Remaining :: non_neg_integer(), Reason :: {send_failed, ReqId, ActualReason} | {invalid_sec_info, SecInfo, SnmpInfo} | term(), ReqId :: request_id(), ActualReason :: term(), SecInfo :: {SecTag, ExpectedValue, ReceivedValue}, SecTag :: atom(), ExpectedValue :: term(), ReceivedValue :: term(), SnmpInfo :: term().
同步 get-next-request
。
Remaining
是給定(或預設)逾時時間的剩餘時間。
當 Reason 為 {send_failed, ...} 時,表示 net-if
程序無法傳送訊息。這可能是因為許多原因造成,例如編碼錯誤。在這種情況下,ActualReason 是實際的原因。
傳送選項 extra
指定傳遞給 net-if
處理程序的不透明資料結構。此應用程式中包含的 net-if
處理程序,除了一種例外情況外,不會使用此資訊,因此它唯一的用途(在使用內建 net-if
時)是追蹤。唯一的例外情況是:任何以 snmpm_extra_info_tag
作為第一個元素的元組都保留供內部使用。
某些傳送選項(community
、sec_model
、sec_name
、sec_level
和 max_message_size
)是覆寫選項
。也就是說,對於此請求,它們會覆寫註冊代理程式時所做的任何組態。
關於 SnmpInfo
,請參閱使用者回呼函式 handle_report。
-spec sync_set2(UserId, TargetName, VarsAndVals) -> {ok, SnmpReply, Remaining} | {error, Reason} when UserId :: user_id(), TargetName :: target_name(), VarsAndVals :: [var_and_val()], SnmpReply :: snmp_reply(), Remaining :: non_neg_integer(), Reason :: {send_failed, ReqId, ActualReason} | {invalid_sec_info, SecInfo, SnmpInfo} | term(), ReqId :: request_id(), ActualReason :: term(), SecInfo :: {SecTag, ExpectedValue, ReceivedValue}, SecTag :: atom(), ExpectedValue :: term(), ReceivedValue :: term(), SnmpInfo :: term().
等同於 sync_set2/4
。
-spec sync_set2(UserId, TargetName, VarsAndVals, SendOpts) -> {ok, SnmpReply, Remaining} | {error, Reason} when UserId :: user_id(), TargetName :: target_name(), VarsAndVals :: [var_and_val()], SendOpts :: [SendOpt], SendOpt :: {context, snmp:context_name()} | {timeout, pos_integer()} | {community, snmp:community()} | {sec_model, snmp:sec_model()} | {sec_name, snmp:sec_name()} | {sec_level, snmp:sec_level()} | {max_message_size, snmp:mms()} | {extra, term()}, SnmpReply :: snmp_reply(), Remaining :: non_neg_integer(), Reason :: {send_failed, ReqId, ActualReason} | {invalid_sec_info, SecInfo, SnmpInfo} | term(), ReqId :: request_id(), ActualReason :: term(), SecInfo :: {SecTag, ExpectedValue, ReceivedValue}, SecTag :: atom(), ExpectedValue :: term(), ReceivedValue :: term(), SnmpInfo :: term().
同步 set-request
。
Remaining
是給定(或預設)逾時時間的剩餘時間。
當 Reason 為 {send_failed, ...} 時,表示 net-if
程序無法傳送訊息。這可能是因為許多原因造成,例如編碼錯誤。在這種情況下,ActualReason 是實際的原因。
當 var_and_val() 是 {oid(), value()} 時,管理器會根據已載入的 MIB 做出有根據的猜測。
傳送選項 extra
指定傳遞給 net-if
處理程序的不透明資料結構。此應用程式中包含的 net-if
處理程序,除了一種例外情況外,不會使用此資訊,因此它唯一的用途(在使用內建 net-if
時)是追蹤。唯一的例外情況是:任何以 snmpm_extra_info_tag
作為第一個元素的元組都保留供內部使用。
某些傳送選項(community
、sec_model
、sec_name
、sec_level
和 max_message_size
)是覆寫選項
。也就是說,對於此請求,它們會覆寫註冊代理程式時所做的任何組態。
關於 SnmpInfo
,請參閱使用者回呼函式 snmpm_user:handle_report/3
。
-spec unload_mib(MibName) -> ok | {error, Reason} when MibName :: snmp:mib_name(), Reason :: term().
從管理器卸載 Mib
。 MibName
是 Mib 的名稱,包括找到已編譯 Mib 的路徑。 例如,
Dir = code:priv_dir(my_app) ++ "/mibs/",
snmpm:unload_mib(Dir ++ "MY-MIB").
-spec unregister_agent(UserId, TargetName) -> ok | {error, Reason} when UserId :: user_id(), TargetName :: target_name(), Reason :: term().
取消註冊代理。
取消註冊使用者。
-spec unregister_usm_user(EngineID, UserName) -> ok | {error, Reason} when EngineID :: snmp:engine_id(), UserName :: snmp:usm_name(), Reason :: term().
取消註冊此 USM 使用者。
-spec update_agent_info(UserId, TargetName, Info) -> ok | {error, Reason} when UserId :: user_id(), TargetName :: target_name(), Info :: [{Item, Value}], Item :: agent_config_item(), Value :: term(), Reason :: term().
更新代理設定。
當需要以原子方式更新多個值時,應使用此函式 update_agent_info/3
。
關於允許的項目類型,請參閱函式 register_agent/3
。
-spec update_agent_info(UserId, TargetName, Item, Value) -> ok | {error, Reason} when UserId :: user_id(), TargetName :: target_name(), Item :: agent_config_item(), Value :: term(), Reason :: term().
更新代理設定。
關於允許的項目類型,請參閱函式 register_agent/3
。
-spec update_usm_user_info(EngineID, UserName, Item, Value) -> ok | {error, Reason} when EngineID :: snmp:engine_id(), UserName :: snmp:usm_name(), Item :: usm_config_item(), Value :: term(), Reason :: term().
更新 usm 使用者設定。
-spec usm_user_info(EngineID, UserName, Item) -> {ok, Value} | {error, Reason} when EngineID :: snmp:engine_id(), UserName :: snmp:usm_name(), Item :: usm_config_item(), Value :: term(), Reason :: term().
擷取 usm 使用者設定。
-spec verbosity(Target, Verbosity) -> snmp:void() when Target :: config | server | net_if | note_store | all, Verbosity :: snmp:verbosity().
設定指定處理序的詳細資訊。 對於最低的詳細資訊 silence
,不會列印任何內容。 詳細資訊越高,列印的內容就越多。
-spec which_agents() -> Agents when Agents :: [target_name()].
等同於 which_agents/1
。
-spec which_agents(UserId) -> Agents when UserId :: user_id(), Agents :: [target_name()].
取得所有已註冊代理或特定使用者註冊的所有代理的清單。
-spec which_mibs() -> Mibs when Mibs :: [{MibName, MibFile}], MibName :: snmp:mib_name(), MibFile :: string().
取得載入到管理器的所有 Mib 的清單。
-spec which_users() -> Users when Users :: [user_id()].
取得所有已註冊使用者身分識別的清單。
-spec which_usm_users() -> UsmUsers when UsmUsers :: [{EngineID, UserName}], EngineID :: snmp:engine_id(), UserName :: snmp:usm_name().
取得所有已註冊 usm 使用者的清單。
-spec which_usm_users(EngineID) -> UsmUsers when EngineID :: snmp:engine_id(), UsmUsers :: [UserName], UserName :: snmp:usm_name().
取得具有引擎 ID EngineID
的所有已註冊 usm 使用者的清單。