查看源代码 snmpm (snmp v5.18)
SNMP 工具包管理器的接口函数
模块 snmpm
包含 SNMP 管理器的接口函数。
摘要
类型
值类型取决于根据以下内容的项
完成(代理)注册的时间。
是标识请求的唯一项。
实现 snmpm_user 行为的模块。
是一个唯一的非空字符串。
是标识用户的唯一项。
值类型取决于根据以下内容的项
o - 'OBJECT IDENTIFIER'
函数
检索代理配置。
异步 get-request
。
异步 get-bulk-request
(参见 RFC1905)。
异步 get-next-request
。
异步 set-request
。
备份管理器处理的持久性数据。
取消之前的异步请求。
取消之前关于 SNMP 管理器启动的通知请求。
更改审计跟踪日志的日志大小。必须配置应用程序以使用审计跟踪日志功能。有关如何更改日志大小的描述,请参阅 Kernel 参考手册中的 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 用户配置。
设置指定进程的详细程度。对于最低的详细程度 silence
,不打印任何内容。详细程度越高,打印的内容就越多。
获取所有已注册代理或特定用户注册的所有代理的列表。
获取加载到管理器中的所有 mib 的列表。
获取所有已注册用户的标识列表。
获取所有已注册 usm 用户的列表。
获取具有 engine-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()} 时,管理器会根据加载的 mibs 进行有根据的猜测。
发送选项 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().
更改审计跟踪日志的日志大小。必须配置应用程序以使用审计跟踪日志功能。有关如何更改日志大小的描述,请参阅 Kernel 参考手册中的 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()} 时,管理器会根据加载的 mibs 进行有根据的猜测。
发送选项 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().
获取具有 engine-id EngineID
的所有已注册 usm 用户的列表。