查看源代码 snmpa (snmp v5.18)

SNMP 工具包代理的接口函数

模块 snmpa 包含 SNMP 代理的接口函数。

摘要

函数

此函数可用于向代理中的 sysORTable 添加 AGENT-CAPABILITY 语句。 该表在 SNMPv2-MIB 中定义。

备份代理处理的持久/永久数据(例如本地数据库、MIB 数据和 vacm)。

更改审核跟踪日志的日志大小。 必须配置应用程序才能使用审核跟踪日志功能。 有关如何更改日志大小的说明,请参阅 Kernel Reference Manual 中的 disk_log(3)。

此脱机实用程序函数可用于将旧的 snmp 应用程序配置(snmp-4.0 之前)转换为新的 snmp 代理配置(从 snmp-4.0 开始)。

获取代理当前正在处理的请求的地址。

获取代理当前正在处理的请求的团体。

获取代理当前正在处理的请求的上下文。

获取代理当前正在处理的请求的请求 ID。

此函数可用于删除代理中 sysORTable 的 AGENT-CAPABILITY 语句。 该表在 SNMPv2-MIB 中定义。

禁用 MIB 服务器缓存。

禁用 MIB 服务器缓存的自动垃圾回收。

等效于 discovery/6

等效于 discovery/6

使用通知 Notification 启动与由 TargetName 标识的管理器之间的发现过程。

启用 MIB 服务器缓存。

启用 MIB 服务器缓存的自动垃圾回收。

将 MIB 中枚举的对象或类型 Name 的符号值 Enum 转换为相应的整数。 必须加载 MIB。

执行 MIB 服务器缓存垃圾回收。

等效于 get/3

在代理上执行 GET 操作。 在此操作中,所有加载的 MIB 对象都是可见的。 代理调用相应的检测函数,就像它是一个来自管理器的 GET 请求一样。

返回代理中 sysORTable 中的所有 AGENT-CAPABILITY 语句。 该表在 SNMPv2-MIB 中定义。

在代理上执行 GET-NEXT 操作。 在此操作中,所有加载的 MIB 对象都是可见的。 代理调用相应的检测函数,就像它是一个来自管理器的 GET 请求一样。

等效于 info/1

返回包含有关代理信息的列表(字典)。 信息包括加载的 MIB、注册的子代理、有关内存分配的一些信息。

将 MIB 中枚举的对象或类型 Name 的整数 Int 转换为相应的符号值。 必须加载 MIB。

使 MIB 服务器缓存无效。

等效于 load_mib/2

将单个 Mib 加载到代理中。 MibName 是 MIB 的名称,包括找到已编译 MIB 的路径。 例如

等效于 load_mibs/3

Mibs 加载到代理中。 如果代理无法加载所有 MIB(Force 参数的默认值为 false),它将指示加载中止的位置。 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 默认为“snmpa_log”。 LogFile 默认为“snmpa.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 默认为“./snmpa_log.txt”。 LogName 默认为“snmpa_log”。 LogFile 默认为“snmpa.log”。

等效于 me_of/2

查找与 Oid 对应的 MIB 条目。

等效于 mib_of/2

查找与 Oid 对应的 MIB。

给定符号名称,查找 MIB 对象的 OBJECT IDENTIFIER。 请注意,OBJECT IDENTIFIER 是针对对象给出的,而不是针对实例给出的。

给定 OBJECT IDENTIFIER,查找 MIB 对象的符号名称。

打印 snmp 代理处理的所有 MIB 的所有(snmp)表和变量的内容。

打印 snmp 代理处理的所有 MIB 的所有(snmp)表的内容。

打印 snmp 代理处理的所有 MIB 的所有(snmp)变量的内容。

接受的类型规范为

在另一个代理的子树下注册一个子代理。

重新启动多线程代理的 set 工作进程。

重新启动多线程代理的工作进程。

将通知 Notification 从指定的 context 发送到在 SNMP-NOTIFICATION-MIB 中的 snmpNotifyTable 中为 notify-name (name) 定义的管理目标。

将通知 Notification 从指定的上下文发送到在 SNMP-NOTIFICATION-MIB 中的 snmpNotifyTable 中为 NotifyName 定义的管理目标。

更改运行时审核跟踪日志类型。

更改请求限制。

从代理中卸载单个 Mib

从代理中卸载 Mibs。 如果它无法卸载所有 MIB(Force 参数的默认值为 false),它将指示卸载中止的位置。

取消注册通知过滤器。

取消注册子代理。 如果第二个参数是 pid,则将从 Agent 中的所有树中取消注册该子代理。

更改 MIB 服务器缓存的 age 属性。

更改 mib 服务器缓存的 gclimit 属性。

设置指定进程的“verbosity”(详细程度)

获取(已编译的)mib 文件的完整路径。

检索代理已知的所有别名。

等同于 which_mibs/1

检索加载到此代理中的所有 mib 的列表。默认是主代理。

检索 mib 服务器缓存的大小。

列出代理中的所有通知过滤器。

检索代理已知的所有通知(和陷阱)。

检索代理已知的所有表。

检索所有已配置的传输。

检索代理已知的所有变量。

类型

-type db() :: volatile | persistent | mnesia.
-type discovery_handler() :: module().

实现 snmpa_discovery_handler 行为的模块。

-type me() :: snmp:me().
-type mib_storage() :: [mib_storage_opt()].
-type mib_storage_module() :: atom().
-type mib_storage_opt() :: {module, mib_storage_module()} | {options, mib_storage_options()}.
-type mib_storage_options() :: list().
-type name() :: table_name() | variable_name().
-type name_db() :: {name(), db()}.
-type nfilter_id() :: term().
-type nfilter_position() :: first | last | {insert_before, nfilter_id()} | {insert_after, nfilter_id()}.
此类型的链接

notification_delivery_info()

查看源代码

应如何报告(通知)传递信息。

-type pdu_type() :: snmp:pdu_type().
-type table_name() :: atom().
-type transport_kind() :: req_responder | trap_sender.
-type variable_name() :: atom().

函数

此函数的链接

add_agent_caps(Oid, Descr)

查看源代码
-spec add_agent_caps(Oid, Descr) -> Index when Oid :: snmp:oid(), Descr :: string(), Index :: integer().

此函数可用于向代理中的 sysORTable 添加 AGENT-CAPABILITY 语句。 该表在 SNMPv2-MIB 中定义。

-spec backup(BackupDir) -> ok | {error, Reason}
                when BackupDir :: string(), Reason :: backup_in_progress | term().

等效于 backup/2

此函数的链接

backup(Agent, BackupDir)

查看源代码
-spec backup(Agent, BackupDir) -> ok | {error, Reason}
                when
                    Agent :: pid() | AgentName,
                    AgentName :: atom(),
                    BackupDir :: string(),
                    Reason :: backup_in_progress | term().

备份代理处理的持久/永久数据(例如本地数据库、MIB 数据和 vacm)。

不处理 mnesia 存储的数据。

BackupDir 不能与 DbDir 相同。

不允许同时进行备份调用。也就是说,两个不同的进程不能同时成功调用此函数。其中一个进程将首先成功,第二个进程将失败,错误原因是 backup_in_progress

此函数的链接

change_log_size(NewSize)

查看源代码
-spec change_log_size(NewSize) -> ok | {error, Reason} when NewSize :: snmp:log_size(), Reason :: term().

更改审核跟踪日志的日志大小。 必须配置应用程序才能使用审核跟踪日志功能。 有关如何更改日志大小的说明,请参阅 Kernel Reference Manual 中的 disk_log(3)。

只要日志不被删除,此更改将永久生效。这意味着,日志大小会在重启后保留。

此函数的链接

convert_config(OldConfig)

查看源代码
-spec convert_config(OldConfig) -> NewConfig when OldConfig :: list(), NewConfig :: list().

此脱机实用程序函数可用于将旧的 snmp 应用程序配置(snmp-4.0 之前)转换为新的 snmp 代理配置(从 snmp-4.0 开始)。

有关旧配置(OldConfig)的信息,请参阅 OTP R9C 文档。

有关当前代理配置(AgentConfig)的信息,请参阅 SNMP 用户指南的 配置应用程序 章节。

-spec current_address() -> {value, Address} | false when Address :: term().

获取代理当前正在处理的请求的地址。

请注意,此函数旨在由检测函数调用,并且当它在代理进程的上下文中执行时(例如,如果从生成的进程调用,则不起作用)。

-spec current_community() -> {value, Community} | false when Community :: snmp_community_mib:name().

获取代理当前正在处理的请求的团体。

请注意,此函数旨在由检测函数调用,并且当它在代理进程的上下文中执行时(例如,如果从生成的进程调用,则不起作用)。

-spec current_context() -> {value, Context} | false when Context :: snmp_community_mib:context_name().

获取代理当前正在处理的请求的上下文。

请注意,此函数旨在由检测函数调用,并且当它在代理进程的上下文中执行时(例如,如果从生成的进程调用,则不起作用)。

-spec current_request_id() -> {value, RequestId} | false when RequestId :: integer().

获取代理当前正在处理的请求的请求 ID。

请注意,此函数旨在由检测函数调用,并且当它在代理进程的上下文中执行时(例如,如果从生成的进程调用,则不起作用)。

-spec del_agent_caps(Index) -> snmp:void() when Index :: integer().

此函数可用于删除代理中 sysORTable 的 AGENT-CAPABILITY 语句。 该表在 SNMPv2-MIB 中定义。

-spec disable_mibs_cache() -> snmp:void().

等效于 disable_mibs_cache/1

此函数的链接

disable_mibs_cache(Agent)

查看源代码
-spec disable_mibs_cache(Agent) -> snmp:void() when Agent :: pid() | AgentName, AgentName :: atom().

禁用 MIB 服务器缓存。

此函数的链接

disable_mibs_cache_autogc()

查看源代码
-spec disable_mibs_cache_autogc() -> snmp:void().

等效于 disable_mibs_cache_autogc/1

此函数的链接

disable_mibs_cache_autogc(Agent)

查看源代码
-spec disable_mibs_cache_autogc(Agent) -> snmp:void()
                                   when Agent :: pid() | AgentName, AgentName :: atom().

禁用 MIB 服务器缓存的自动垃圾回收。

此函数的链接

discovery(TargetName, Notification)

查看源代码
-spec discovery(TargetName, Notification) -> {ok, ManagerEngineID} | {error, Reason}
                   when
                       TargetName :: string(),
                       Notification :: atom(),
                       ManagerEngineID :: snmp_framework_mib:engine_id(),
                       Reason :: term().

等效于 discovery/6

-spec discovery(TargetName, Notification, Varbinds) -> {ok, ManagerEngineID} | {error, Reason}
                   when
                       TargetName :: string(),
                       Notification :: atom(),
                       Varbinds :: [Varbind],
                       Varbind ::
                           {Variable :: atom(), Value} |
                           {OID :: snmp:oid(), Value} |
                           {Column :: atom(), RowIndex :: snmp:row_index(), Value},
                       Value :: term(),
                       ManagerEngineID :: snmp_framework_mib:engine_id(),
                       Reason :: term();
               (TargetName, Notification, ContextName) -> {ok, ManagerEngineID} | {error, Reason}
                   when
                       TargetName :: string(),
                       Notification :: atom(),
                       ContextName :: snmp_community_mib:context_name(),
                       ManagerEngineID :: snmp_framework_mib:engine_id(),
                       Reason :: term().

等效于 discovery/6

-spec discovery(TargetName, Notification, ContextName, Varbinds) ->
                   {ok, ManagerEngineID} | {error, Reason}
                   when
                       TargetName :: string(),
                       Notification :: atom(),
                       ContextName :: snmp_community_mib:context_name(),
                       Varbinds :: [Varbind],
                       Varbind :: {Variable, Value} | {Column, RowIndex, Value} | {OID, Value},
                       Variable :: atom(),
                       Column :: atom(),
                       RowIndex :: snmp:row_index(),
                       OID :: snmp:oid(),
                       Value :: term(),
                       ManagerEngineID :: snmp_framework_mib:engine_id(),
                       Reason :: term();
               (TargetName, Notification, Varbinds, DiscoHandler) ->
                   {ok, ManagerEngineID} | {error, Reason}
                   when
                       TargetName :: string(),
                       Notification :: atom(),
                       Varbinds :: [Varbind],
                       Varbind :: {Variable, Value} | {Column, RowIndex, Value} | {OID, Value},
                       Variable :: atom(),
                       Column :: atom(),
                       RowIndex :: snmp:row_index(),
                       OID :: snmp:oid(),
                       Value :: term(),
                       DiscoHandler :: discovery_handler(),
                       ManagerEngineID :: snmp_framework_mib:engine_id(),
                       Reason :: term().

等效于 discovery/6

此函数的链接

discovery(TargetName, Notification, ContextName, Varbinds, DiscoHandler)

查看源代码
-spec discovery(TargetName, Notification, ContextName, Varbinds, DiscoHandler) ->
                   {ok, ManagerEngineID} | {error, Reason}
                   when
                       TargetName :: string(),
                       Notification :: atom(),
                       ContextName :: snmp_community_mib:context_name(),
                       Varbinds :: [Varbind],
                       Varbind :: {Variable, Value} | {Column, RowIndex, Value} | {OID, Value},
                       Variable :: atom(),
                       Column :: atom(),
                       RowIndex :: snmp:row_index(),
                       OID :: snmp:oid(),
                       Value :: term(),
                       DiscoHandler :: discovery_handler(),
                       ManagerEngineID :: snmp_framework_mib:engine_id(),
                       Reason :: term().

等效于 discovery/6

此函数的链接

discovery(TargetName, Notification, ContextName, Varbinds, DiscoHandler, ExtraInfo)

查看源代码
-spec discovery(TargetName, Notification, ContextName, Varbinds, DiscoHandler, ExtraInfo) ->
                   {ok, ManagerEngineID} | {error, Reason}
                   when
                       TargetName :: string(),
                       Notification :: atom(),
                       ContextName :: snmp_community_mib:context_name(),
                       Varbinds :: [Varbind],
                       Varbind :: {Variable, Value} | {Column, RowIndex, Value} | {OID, Value},
                       Variable :: atom(),
                       Column :: atom(),
                       RowIndex :: snmp:row_index(),
                       OID :: snmp:oid(),
                       Value :: term(),
                       DiscoHandler :: discovery_handler(),
                       ExtraInfo :: term(),
                       ManagerEngineID :: snmp_framework_mib:engine_id(),
                       Reason :: term().

使用通知 Notification 启动与由 TargetName 标识的管理器之间的发现过程。

此函数是同步的,这意味着它将在发现过程完成或失败时返回。

在发现过程中使用 DiscoHandler 模块。有关详细信息,请参阅 发现处理程序

ExtraInfo 参数将传递给 DiscoHandler 的回调函数。

注意

如果我们不处于安全级别 noAuthNoPriv,这可能会很复杂,因为代理将在第 2 阶段之前继续,在此之前必须完成与 usm 相关的更新。

注意

如果安全级别高于 noAuthNoPriv,则默认发现处理程序将需要调用方执行其他操作,并且发现将不起作用。

-spec enable_mibs_cache() -> snmp:void().

等效于 enable_mibs_cache/1

此函数的链接

enable_mibs_cache(Agent)

查看源代码
-spec enable_mibs_cache(Agent) -> snmp:void() when Agent :: pid() | AgentName, AgentName :: atom().

启用 MIB 服务器缓存。

此函数的链接

enable_mibs_cache_autogc()

查看源代码
-spec enable_mibs_cache_autogc() -> snmp:void().

等效于 enable_mibs_cache_autogc/1

此函数的链接

enable_mibs_cache_autogc(Agent)

查看源代码
-spec enable_mibs_cache_autogc(Agent) -> snmp:void()
                                  when Agent :: pid() | AgentName, AgentName :: atom().

启用 MIB 服务器缓存的自动垃圾回收。

此函数的链接

enum_to_int(Name, Enum)

查看源代码
-spec enum_to_int(Name, Enum) -> {value, Int} | false
                     when Name :: atom(), Enum :: atom(), Int :: integer().

等效于 enum_to_int/3

此函数的链接

enum_to_int(Db, Name, Enum)

查看源代码
-spec enum_to_int(Db, Name, Enum) -> {value, Int} | false
                     when Db :: term(), Name :: atom(), Enum :: atom(), Int :: integer().

将 MIB 中枚举的对象或类型 Name 的符号值 Enum 转换为相应的整数。 必须加载 MIB。

如果对象或类型未在任何已加载的 MIB 中定义,或者如果它没有将符号值定义为枚举,则返回 false

Db 是对符号存储数据库的引用(通过调用 get_symbolic_store_db/0 检索)。

-spec gc_mibs_cache() -> {ok, NumElementsGCed} | {error, Reason}
                       when NumElementsGCed :: non_neg_integer(), Reason :: term().

等效于 gc_mibs_cache/3

-spec gc_mibs_cache(Agent) -> {ok, NumElementsGCed} | {error, Reason}
                       when
                           Agent :: pid() | AgentName,
                           AgentName :: atom(),
                           NumElementsGCed :: non_neg_integer(),
                           Reason :: term();
                   (Age) -> {ok, NumElementsGCed} | {error, Reason}
                       when Age :: pos_integer(), NumElementsGCed :: non_neg_integer(), Reason :: term().

等效于 gc_mibs_cache/3

-spec gc_mibs_cache(Agent, Age) -> {ok, NumElementsGCed} | {error, Reason}
                       when
                           Agent :: pid() | AgentName,
                           AgentName :: atom(),
                           Age :: pos_integer(),
                           NumElementsGCed :: non_neg_integer(),
                           Reason :: term();
                   (Age, GcLimit) -> {ok, NumElementsGCed} | {error, Reason}
                       when
                           Age :: pos_integer(),
                           GcLimit :: pos_integer() | infinity,
                           NumElementsGCed :: non_neg_integer(),
                           Reason :: term().

等效于 gc_mibs_cache/3

此函数的链接

gc_mibs_cache(Agent, Age, GcLimit)

查看源代码
-spec gc_mibs_cache(Agent, Age, GcLimit) -> {ok, NumElementsGCed} | {error, Reason}
                       when
                           Agent :: pid() | AgentName,
                           AgentName :: atom(),
                           Age :: pos_integer(),
                           GcLimit :: pos_integer() | infinity,
                           NumElementsGCed :: non_neg_integer(),
                           Reason :: term().

执行 MIB 服务器缓存垃圾回收。

手动执行 mib 服务器缓存垃圾回收。无论 autogc 选项的值如何,都可以执行此操作。NumElementsGCed 值指示实际从缓存中删除的元素数量。

-spec get(Agent, Vars) -> Values | {error, Reason}
             when
                 Agent :: pid() | AgentName,
                 AgentName :: atom(),
                 Vars :: [snmp:oid()],
                 Values :: [term()],
                 Reason :: term().

等效于 get/3

此函数的链接

get(Agent, Vars, Context)

查看源代码
-spec get(Agent, Vars, Context) -> Values | {error, Reason}
             when
                 Agent :: pid() | AgentName,
                 AgentName :: atom(),
                 Vars :: [snmp:oid()],
                 Context :: snmp_community_mib:context_name(),
                 Values :: [term()],
                 Reason :: term().

在代理上执行 GET 操作。 在此操作中,所有加载的 MIB 对象都是可见的。 代理调用相应的检测函数,就像它是一个来自管理器的 GET 请求一样。

请注意,如果使用此函数,则检测函数无法访问特定于请求的参数(例如 current_request_id/0)。

-spec get_agent_caps() -> Caps
                        when
                            Caps :: [[Cap]],
                            Cap :: SysORIndex | SysORID | SysORDescr | SysORUpTime,
                            SysORIndex :: integer(),
                            SysORID :: snmp:oid(),
                            SysORDescr :: string(),
                            SysORUpTime :: integer().

返回代理中 sysORTable 中的所有 AGENT-CAPABILITY 语句。 该表在 SNMPv2-MIB 中定义。

请注意,Erlang 类型语言不允许我们正确描述此函数返回的内容。确切的返回值是

[[SysORIndex, SysORID, SysORDescr, SysORUpTime]]

-spec get_next(Agent, Vars) -> Values | {error, Reason}
                  when
                      Agent :: pid() | AgentName,
                      AgentName :: atom(),
                      Vars :: [snmp:oid()],
                      Values :: [{snmp:oid(), term()}],
                      Reason :: term().

等效于 get_next/3

此函数的链接

get_next(Agent, Vars, Context)

查看源代码
-spec get_next(Agent, Vars, Context) -> Values | {error, Reason}
                  when
                      Agent :: pid() | AgentName,
                      AgentName :: atom(),
                      Vars :: [snmp:oid()],
                      Context :: snmp_community_mib:context_name(),
                      Values :: [{snmp:oid(), term()}],
                      Reason :: {atom(), snmp:oid()}.

在代理上执行 GET-NEXT 操作。 在此操作中,所有加载的 MIB 对象都是可见的。 代理调用相应的检测函数,就像它是一个来自管理器的 GET 请求一样。

请注意,如果使用此函数,则检测函数无法访问特定于请求的参数(例如 snmpa:current_request_id/0)。

-spec info() -> Info when Info :: [{Key, Value}], Key :: term(), Value :: term().

等效于 info/1

-spec info(Agent) -> Info
              when
                  Agent :: pid() | AgentName,
                  AgentName :: atom(),
                  Info :: [{Key, Value}],
                  Key :: term(),
                  Value :: term().

返回包含有关代理信息的列表(字典)。 信息包括加载的 MIB、注册的子代理、有关内存分配的一些信息。

此函数的链接

int_to_enum(Name, Int)

查看源代码
-spec int_to_enum(Name, Int) -> {value, Enum} | false
                     when Name :: atom(), Int :: integer(), Enum :: atom().

等效于 int_to_enum/3

此函数的链接

int_to_enum(Db, Name, Int)

查看源代码
-spec int_to_enum(Db, Name, Int) -> {value, Enum} | false
                     when Db :: term(), Name :: atom(), Int :: integer(), Enum :: atom().

将 MIB 中枚举的对象或类型 Name 的整数 Int 转换为相应的符号值。 必须加载 MIB。

如果对象或类型未在任何已加载的 MIB 中定义,或者如果它没有将符号值定义为枚举,则返回 false

Db 是对符号存储数据库的引用(通过调用 get_symbolic_store_db/0 检索)。

此函数的链接

invalidate_mibs_cache()

查看源代码
-spec invalidate_mibs_cache() -> snmp:void().

等效于 invalidate_mibs_cache/1

此函数的链接

invalidate_mibs_cache(Agent)

查看源代码
-spec invalidate_mibs_cache(Agent) -> snmp:void() when Agent :: pid() | AgentName, AgentName :: atom().

使 MIB 服务器缓存无效。

将删除缓存的全部内容。

此函数的链接

load_mib(Mib)

查看源代码 (自 OTP R16B02 起)
-spec load_mib(Mib) -> ok | {error, Reason} when Mib :: string(), Reason :: already_loaded | term().

等效于 load_mib/2

此函数的链接

load_mib(Agent, Mib)

查看源代码 (自 OTP R16B02 起)
-spec load_mib(Agent, Mib) -> ok | {error, Reason}
                  when
                      Agent :: pid() | AgentName,
                      AgentName :: atom(),
                      Mib :: string(),
                      Reason :: already_loaded | term().

将单个 Mib 加载到代理中。 MibName 是 MIB 的名称,包括找到已编译 MIB 的路径。 例如

          Dir = code:priv_dir(my_app) ++ "/mibs/",
          snmpa:load_mib(snmp_master_agent, Dir ++ "MY-MIB").
-spec load_mibs(Mibs) -> ok | {error, Reason}
                   when
                       Mibs :: [MibName],
                       MibName :: string(),
                       Reason :: {'load aborted at', MibName, InternalReason},
                       InternalReason :: already_loaded | term().

等效于 load_mibs/3

-spec load_mibs(Agent, Mibs) -> ok | {error, Reason}
                   when
                       Agent :: pid() | AgentName,
                       AgentName :: atom(),
                       Mibs :: [MibName],
                       MibName :: string(),
                       Reason :: {'load aborted at', MibName, InternalReason},
                       InternalReason :: already_loaded | term();
               (Mibs, Force) -> ok | {error, Reason}
                   when
                       Mibs :: [MibName],
                       MibName :: string(),
                       Force :: boolean(),
                       Reason :: {'load aborted at', MibName, InternalReason},
                       InternalReason :: already_loaded | term().

等效于 load_mibs/3

此函数的链接

load_mibs(Agent, Mibs, Force)

查看源代码 (自 OTP R16B02 起)
-spec load_mibs(Agent, Mibs, Force) -> ok | {error, Reason}
                   when
                       Agent :: pid() | AgentName,
                       AgentName :: atom(),
                       Mibs :: [MibName],
                       MibName :: string(),
                       Force :: boolean(),
                       Reason :: {'load aborted at', MibName, InternalReason},
                       InternalReason :: already_loaded | term().

Mibs 加载到代理中。 如果代理无法加载所有 MIB(Force 参数的默认值为 false),它将指示加载中止的位置。 MibName 是 MIB 的名称,包括找到已编译 MIB 的路径。 例如,

          Dir = code:priv_dir(my_app) ++ "/mibs/",
          snmpa:load_mibs(snmp_master_agent, [Dir ++ "MY-MIB"]).

如果 Force = true,即使在加载前一个 mib 失败后,代理也会继续尝试加载每个 mib。请谨慎使用。

此函数的链接

log_to_io(LogDir)

查看源代码 (自 OTP R15B01 起)
-spec log_to_io(LogDir) -> ok | {ok, Cnt} | {error, Reason}
                   when
                       LogDir :: string(),
                       Cnt :: {NumOK, NumERR},
                       NumOK :: non_neg_integer(),
                       NumERR :: pos_integer(),
                       Reason :: term().

等效于 log_to_io/7

此函数的链接

log_to_io/2

查看源代码 (自 OTP R15B01 起)
-spec log_to_io(LogDir, Block) -> ok | {ok, Cnt} | {error, Reason}
                   when
                       LogDir :: string(),
                       Block :: boolean(),
                       Cnt :: {NumOK, NumERR},
                       NumOK :: non_neg_integer(),
                       NumERR :: pos_integer(),
                       Reason :: term();
               (LogDir, Mibs) -> ok | {ok, Cnt} | {error, Reason}
                   when
                       LogDir :: string(),
                       Mibs :: [snmp:mib_name()],
                       Cnt :: {NumOK, NumERR},
                       NumOK :: non_neg_integer(),
                       NumERR :: pos_integer(),
                       Reason :: term().

等效于 log_to_io/7

此函数的链接

log_to_io/3

查看源代码 (自 OTP R15B01 起)
-spec log_to_io(LogDir, Mibs, Block) -> ok | {ok, Cnt} | {error, Reason}
                   when
                       LogDir :: string(),
                       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 :: string(),
                       Mibs :: [snmp:mib_name()],
                       LogName :: string(),
                       Cnt :: {NumOK, NumERR},
                       NumOK :: non_neg_integer(),
                       NumERR :: pos_integer(),
                       Reason :: term().

等效于 log_to_io/7

此函数的链接

log_to_io/4

查看源代码 (自 OTP R15B01 起)
-spec log_to_io(LogDir, Mibs, LogName, Block) -> ok | {ok, Cnt} | {error, Reason}
                   when
                       LogDir :: string(),
                       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 :: string(),
                       Mibs :: [snmp:mib_name()],
                       LogName :: string(),
                       LogFile :: string(),
                       Cnt :: {NumOK, NumERR},
                       NumOK :: non_neg_integer(),
                       NumERR :: pos_integer(),
                       Reason :: term().

等效于 log_to_io/7

此函数的链接

log_to_io/5

查看源代码 (自 OTP R15B01 起)
-spec log_to_io(LogDir, Mibs, LogName, LogFile, Block) -> ok | {ok, Cnt} | {error, Reason}
                   when
                       LogDir :: string(),
                       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 :: string(),
                       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

此函数的链接

log_to_io/6

查看源代码 (自 OTP R15B01 起)
-spec log_to_io(LogDir, Mibs, LogName, LogFile, Block, Start) -> ok | {ok, Cnt} | {error, Reason}
                   when
                       LogDir :: string(),
                       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 :: string(),
                       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

此函数的链接

log_to_io(LogDir, Mibs, LogName, LogFile, Block, Start, Stop)

查看源代码 (自 OTP R16B03 起)
-spec log_to_io(LogDir, Mibs, LogName, LogFile, Block, Start, Stop) -> ok | {ok, Cnt} | {error, Reason}
                   when
                       LogDir :: string(),
                       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 默认为“snmpa_log”。 LogFile 默认为“snmpa.log”。

Block 选项指示是否应在转换期间阻止日志。这在转换大型日志时很有用(否则,日志可能会在转换期间回绕)。默认为 true

有关详细信息,请参阅 snmp:log_to_io/7

此函数的链接

log_to_txt(LogDir)

查看源代码 (自 OTP R15B01 起)
-spec log_to_txt(LogDir) -> snmp:void() when LogDir :: snmp:dir().

等效于 log_to_txt/8

-spec log_to_txt(LogDir, Block) -> snmp:void() when LogDir :: snmp:dir(), Block :: boolean();
                (LogDir, Mibs) -> snmp:void() when LogDir :: snmp:dir(), Mibs :: [snmp:mib_name()].

等效于 log_to_txt/8

-spec log_to_txt(LogDir, Mibs, Block) -> snmp:void()
                    when LogDir :: snmp:dir(), Mibs :: [snmp:mib_name()], Block :: boolean();
                (LogDir, Mibs, OutFile) -> snmp:void()
                    when LogDir :: snmp:dir(), Mibs :: [snmp:mib_name()], OutFile :: file:filename().

等效于 log_to_txt/8

-spec log_to_txt(LogDir, Mibs, OutFile, Block) -> snmp:void()
                    when
                        LogDir :: snmp:dir(),
                        Mibs :: [snmp:mib_name()],
                        OutFile :: file:filename(),
                        Block :: boolean();
                (LogDir, Mibs, OutFile, LogName) -> snmp:void()
                    when
                        LogDir :: snmp:dir(),
                        Mibs :: [snmp:mib_name()],
                        OutFile :: file:filename(),
                        LogName :: string().

等效于 log_to_txt/8

-spec log_to_txt(LogDir, Mibs, OutFile, LogName, Block) -> snmp:void()
                    when
                        LogDir :: snmp:dir(),
                        Mibs :: [snmp:mib_name()],
                        OutFile :: file:filename(),
                        LogName :: string(),
                        Block :: boolean();
                (LogDir, Mibs, OutFile, LogName, LogFile) -> snmp:void()
                    when
                        LogDir :: snmp:dir(),
                        Mibs :: [snmp:mib_name()],
                        OutFile :: file:filename(),
                        LogName :: string(),
                        LogFile :: string().

等效于 log_to_txt/8

-spec log_to_txt(LogDir, Mibs, OutFile, LogName, LogFile, Block | Start) -> snmp:void()
                    when
                        LogDir :: snmp:dir(),
                        Mibs :: [snmp:mib_name()],
                        OutFile :: file:filename(),
                        LogName :: string(),
                        LogFile :: string(),
                        Block :: boolean(),
                        Start :: null | snmp:log_time().

等效于 log_to_txt/8

-spec log_to_txt(LogDir, Mibs, OutFile, LogName, LogFile, Block, Start) -> snmp:void()
                    when
                        LogDir :: snmp:dir(),
                        Mibs :: [snmp:mib_name()],
                        OutFile :: file:filename(),
                        LogName :: string(),
                        LogFile :: string(),
                        Block :: boolean(),
                        Start :: null | snmp:log_time();
                (LogDir, Mibs, OutFile, LogName, LogFile, Start, Stop) -> snmp:void()
                    when
                        LogDir :: snmp:dir(),
                        Mibs :: [snmp:mib_name()],
                        OutFile :: file:filename(),
                        LogName :: string(),
                        LogFile :: string(),
                        Start :: null | snmp:log_time(),
                        Stop :: null | snmp:log_time().

等效于 log_to_txt/8

此函数的链接

log_to_txt(LogDir, Mibs, OutFile, LogName, LogFile, Block, Start, Stop)

查看源代码 (自 OTP R16B03 起)
-spec log_to_txt(LogDir, Mibs, OutFile, LogName, LogFile, Block, Start, Stop) -> snmp:void()
                    when
                        LogDir :: snmp:dir(),
                        Mibs :: [snmp:mib_name()],
                        OutFile :: file:filename(),
                        LogName :: string(),
                        LogFile :: string(),
                        Block :: boolean(),
                        Start :: null | snmp:log_time(),
                        Stop :: null | snmp:log_time().

将审核跟踪日志转换为可读的文本文件。 OutFile 默认为“./snmpa_log.txt”。 LogName 默认为“snmpa_log”。 LogFile 默认为“snmpa.log”。

Block 选项指示是否应在转换期间阻止日志。这在转换大型日志时很有用(否则,日志可能会在转换期间回绕)。默认为 true

有关详细信息,请参阅 snmp:log_to_txt/8

-spec me_of(Oid) -> {ok, Me} | {error, Reason} when Oid :: snmp:oid(), Me :: snmp:me(), Reason :: term().

等效于 me_of/2

-spec me_of(Agent, Oid) -> {ok, Me} | {error, Reason}
               when
                   Agent :: pid() | AgentName,
                   AgentName :: atom(),
                   Oid :: snmp:oid(),
                   Me :: snmp:me(),
                   Reason :: term().

查找与 Oid 对应的 MIB 条目。

如果是变量,则 Oid 必须为 .0;如果是表,则 Oid 必须为

...

-spec mib_of(Oid) -> {ok, MibName} | {error, Reason}
                when Oid :: snmp:oid(), MibName :: atom(), Reason :: term().

等效于 mib_of/2

-spec mib_of(Agent, Oid) -> {ok, MibName} | {error, Reason}
                when
                    Agent :: pid() | AgentName,
                    AgentName :: atom(),
                    Oid :: snmp:oid(),
                    MibName :: atom(),
                    Reason :: term().

查找与 Oid 对应的 MIB。

如果是变量,则 Oid 必须为 .0;如果是表,则 Oid 必须为

...

-spec name_to_oid(Name) -> {value, Oid} | false when Name :: atom(), Oid :: snmp:oid().

等效于 name_to_oid/2

-spec name_to_oid(Db, Name) -> {value, Oid} | false when Db :: term(), Name :: atom(), Oid :: snmp:oid().

给定符号名称,查找 MIB 对象的 OBJECT IDENTIFIER。 请注意,OBJECT IDENTIFIER 是针对对象给出的,而不是针对实例给出的。

如果对象未在任何已加载的 MIB 中定义,则返回 false

Db 是对符号存储数据库的引用(通过调用 get_symbolic_store_db/0 检索)。

-spec oid_to_name(Oid) -> {value, Name} | false when Oid :: snmp:oid(), Name :: atom().

等效于 oid_to_name/2

-spec oid_to_name(Db, Oid) -> {value, Name} | false when Db :: term(), Oid :: snmp:oid(), Name :: atom().

给定 OBJECT IDENTIFIER,查找 MIB 对象的符号名称。

如果对象未在任何已加载的 MIB 中定义,则返回 false

Db 是对符号存储数据库的引用(通过调用 get_symbolic_store_db/0 检索)。

此函数的链接

register_notification_filter(Id, Mod, Data)

查看源代码
-spec register_notification_filter(Id, Mod, Data) -> ok | {error, Reason}
                                      when
                                          Id :: nfilter_id(),
                                          Mod :: module(),
                                          Data :: term(),
                                          Reason :: term().

等效于 register_notification_filter/5

此函数的链接

register_notification_filter/4

查看源代码
-spec register_notification_filter(Agent | Id, Id | Mod, Mod | Data, Data | Where) ->
                                      ok | {error, Reason}
                                      when
                                          Agent :: pid() | AgentName,
                                          AgentName :: atom(),
                                          Id :: nfilter_id(),
                                          Mod :: module(),
                                          Data :: term(),
                                          Where :: nfilter_position(),
                                          Reason :: term().

接受的类型规范为

-spec register_notification_filter(Agent, Id, Mod, Data) -> ok | {error, Reason}.
-spec register_notification_filter(Id, Mod, Data, Where) -> ok | {error, Reason}.
此函数的链接

register_notification_filter(Agent, Id, Mod, Data, Where)

查看源代码
-spec register_notification_filter(Agent, Id, Mod, Data, Where) -> ok | {error, Reason}
                                      when
                                          Agent :: pid() | AgentName,
                                          AgentName :: atom(),
                                          Id :: nfilter_id(),
                                          Mod :: module(),
                                          Data :: term(),
                                          Where :: nfilter_position(),
                                          Reason :: term().

注册通知过滤器。

Mod 是一个实现 snmpa_notification_filter 行为的模块。

调用该行为的函数时,Data 将传递给过滤器。

此函数的链接

register_subagent(Agent, SubTree, SubAgent)

查看源代码
-spec register_subagent(Agent, SubTree, SubAgent) -> ok | {error, Reason}
                           when
                               Agent :: pid() | AgentName,
                               AgentName :: atom(),
                               SubTree :: snmp:oid(),
                               SubAgent :: pid(),
                               Reason :: term().

在另一个代理的子树下注册一个子代理。

注册子代理时很容易出错,应谨慎执行此操作。例如,以下配置会导致奇怪的行为

snmp_agent:register_subagent(MAPid,[1,2,3,4],SA1),
snmp_agent:register_subagent(SA1,[1,2,3], SA2).

SA2 将不会收到以对象标识符 [1,2,3] 开头的请求,因为 SA1 没有。

-spec restart_set_worker() -> snmp:void().

等效于 restart_set_worker/1

此函数的链接

restart_set_worker(Agent)

查看源代码
-spec restart_set_worker(Agent) -> snmp:void() when Agent :: pid | AgentName, AgentName :: atom().

重新启动多线程代理的 set 工作进程。

这是一个实用程序函数,在调试检测函数时可能会很有用。

-spec restart_worker() -> snmp:void().

等效于 restart_worker/1

-spec restart_worker(Agent) -> snmp:void() when Agent :: pid | AgentName, AgentName :: atom().

重新启动多线程代理的工作进程。

这是一个实用程序函数,在调试检测函数时可能会很有用。

此函数的链接

send_notification2(Agent, Notification, SendOpts)

查看源代码 (自 OTP R14B03 起)
-spec send_notification2(Agent, Notification, SendOpts) -> snmp:void()
                            when
                                Agent :: pid() | AgentName,
                                AgentName :: atom(),
                                Notification :: atom(),
                                SendOpts :: [SendOpt],
                                SendOpt ::
                                    {receiver, Receiver} |
                                    {name, snmp_notification_mib:notify_name()} |
                                    {context, snmp_community_mib:context_name()} |
                                    {varbinds, [Varbind]} |
                                    {local_engine_id, snmp_framework_mib:engine_id()} |
                                    {extra, term()},
                                Receiver :: no_receiver | {Tag, Recv} | notification_delivery_info(),
                                Tag :: term(),
                                Recv :: pid() | atom() | MFA,
                                MFA :: {Mod, Func, Args},
                                Mod :: module(),
                                Func :: atom(),
                                Args :: list(),
                                Varbind :: {Variable, Value} | {Column, RowIndex, Value} | {Oid, Value},
                                Variable :: atom(),
                                Column :: atom(),
                                RowIndex :: snmp:row_index(),
                                Oid :: snmp:oid(),
                                Value :: term().

将通知 Notification 从指定的 context 发送到在 SNMP-NOTIFICATION-MIB 中的 snmpNotifyTable 中为 notify-name (name) 定义的管理目标。

如果未指定 name(或如果它是 ""),则会将通知发送到所有管理目标。

如果未指定 context,则使用默认上下文 ""

发送选项 receiver 指定应将有关 Inform-Request 传递的信息发送到何处。代理发送 Inform-Request 并等待来自管理目标的确认。receiver 可以有三个值

  • no_receiver - 不传递任何信息。

  • notification_delivery_info/0 - 根据此数据通过函数调用传递信息。

  • {tag(), tag_receiver()} - 根据 tag_receiver() 的值,通过消息或通过函数调用传递信息。

    根据 tag_receiver() 的值,以不同的方式进行传递

    • pid() | registered_name() - 信息将以以下消息传递

      • {snmp_targets, tag(), Addresses}

        这会通知用户将通知发送到了哪些目标地址。

      • {snmp_notification, tag(), {got_response, Address}}

        这会通知用户此目标地址已确认通知。

      • {snmp_notification, tag(), {no_response, Address}}

        这会通知用户此目标地址未确认通知。

      通知会以 Inform-Request 的形式发送到 Addresses 中的每个目标地址。如果没有发送 Inform-Request 的目标,则 Addresses 为空列表 []

      tag_receiver() 将首先收到 snmp_targets 消息,然后对于 Addresses 列表中的每个地址,会收到两条 snmp_notification 消息中的一条。

    • {Mod, Func, Args} - 信息将通过函数调用传递。

      Mod:Func([Msg | Args])

      其中 Msg 的内容和用途与上述消息相同。

可以使用变量名/OID提供的 “process oid” “tag” 用于 OID 后处理。值 'keep'(默认值)保持 OID 不变。值 'truncate' 将导致 OID 被“截断”。也就是说,任何尾部的 ".0" 将被删除。

注意

有一种方法可以从通知中排除 varbind。在普通的 varbinds 列表中,提供特殊值 '$ignore-oid'(而不是普通值)将从通知中排除此 varbind。

已将此定义添加到 snmp_types.hrl 包含文件中,即 NOTIFICATION_IGNORE_VB_VALUE

注意

extra 信息通常不会被代理解释,而是传递给 net-if 进程。是否使用此数据取决于该进程的实现者。

此应用程序提供的 net-if 版本不使用此数据,但有一个例外:任何包含原子 snmpa_default_notification_extra_info 的元组可能会被代理使用,因此是保留的

有关发送 trap通知 的更多信息,请参阅 net-if 入站消息。

此函数的链接

send_notification(Agent, Notification, Receiver)

查看源代码
-spec send_notification(Agent, Notification, Receiver) -> snmp:void()
                           when
                               Agent :: pid() | AgentName,
                               AgentName :: atom(),
                               Notification :: atom(),
                               Receiver :: no_receiver | {Tag, Recv} | notification_delivery_info(),
                               Tag :: term(),
                               Recv :: pid() | atom() | MFA,
                               MFA :: {Mod, Func, Args},
                               Mod :: module(),
                               Func :: atom(),
                               Args :: list().

等效于 send_notification/7

此函数的链接

send_notification(Agent, Notification, Receiver, Varbinds)

查看源代码
-spec send_notification(Agent, Notification, Receiver, Varbinds) -> snmp:void()
                           when
                               Agent :: pid() | AgentName,
                               AgentName :: atom(),
                               Notification :: atom(),
                               Receiver :: no_receiver | {Tag, Recv} | notification_delivery_info(),
                               Tag :: term(),
                               Recv :: pid() | atom() | MFA,
                               MFA :: {Mod, Func, Args},
                               Mod :: module(),
                               Func :: atom(),
                               Args :: list(),
                               Varbinds :: [Varbind],
                               Varbind :: {Variable, Value} | {Column, RowIndex, Value} | {Oid, Value},
                               Variable :: atom(),
                               Column :: atom(),
                               RowIndex :: snmp:row_index(),
                               Oid :: snmp:oid(),
                               Value :: term().

等效于 send_notification/7

此函数的链接

send_notification(Agent, Notification, Receiver, NotifyName, Varbinds)

查看源代码
-spec send_notification(Agent, Notification, Receiver, NotifyName, Varbinds) -> snmp:void()
                           when
                               Agent :: pid() | AgentName,
                               AgentName :: atom(),
                               Notification :: atom(),
                               Receiver :: no_receiver | {Tag, Recv} | notification_delivery_info(),
                               Tag :: term(),
                               Recv :: pid() | atom() | MFA,
                               MFA :: {Mod, Func, Args},
                               Mod :: module(),
                               Func :: atom(),
                               Args :: list(),
                               NotifyName :: snmp_notification_mib:notify_name(),
                               Varbinds :: [Varbind],
                               Varbind :: {Variable, Value} | {Column, RowIndex, Value} | {Oid, Value},
                               Variable :: atom(),
                               Column :: atom(),
                               RowIndex :: snmp:row_index(),
                               Oid :: snmp:oid(),
                               Value :: term().

等效于 send_notification/7

此函数的链接

send_notification(Agent, Notification, Receiver, NotifyName, ContextName, Varbinds)

查看源代码
-spec send_notification(Agent, Notification, Receiver, NotifyName, ContextName, Varbinds) -> snmp:void()
                           when
                               Agent :: pid() | AgentName,
                               AgentName :: atom(),
                               Notification :: atom(),
                               Receiver :: no_receiver | {Tag, Recv} | notification_delivery_info(),
                               Tag :: term(),
                               Recv :: pid() | atom() | MFA,
                               MFA :: {Mod, Func, Args},
                               Mod :: module(),
                               Func :: atom(),
                               Args :: list(),
                               NotifyName :: snmp_notification_mib:notify_name(),
                               ContextName :: snmp_community_mib:context_name(),
                               Varbinds :: [Varbind],
                               Varbind :: {Variable, Value} | {Column, RowIndex, Value} | {Oid, Value},
                               Variable :: atom(),
                               Column :: atom(),
                               RowIndex :: snmp:row_index(),
                               Oid :: snmp:oid(),
                               Value :: term().

等效于 send_notification/7

此函数的链接

send_notification(Agent, Notification, Receiver, NotifyName, ContextName, Varbinds, LocalEngineID)

查看源代码 (自 OTP R14B 起)
-spec send_notification(Agent, Notification, Receiver, NotifyName, ContextName, Varbinds, LocalEngineID) ->
                           snmp:void()
                           when
                               Agent :: pid() | AgentName,
                               AgentName :: atom(),
                               Notification :: atom(),
                               Receiver :: no_receiver | {Tag, Recv} | notification_delivery_info(),
                               Tag :: term(),
                               Recv :: pid() | atom() | MFA,
                               MFA :: {Mod, Func, Args},
                               Mod :: module(),
                               Func :: atom(),
                               Args :: list(),
                               NotifyName :: snmp_notification_mib:notify_name(),
                               ContextName :: snmp_community_mib:context_name(),
                               Varbinds :: [Varbind],
                               Varbind :: {Variable, Value} | {Column, RowIndex, Value} | {Oid, Value},
                               Variable :: atom(),
                               Column :: atom(),
                               RowIndex :: snmp:row_index(),
                               Oid :: snmp:oid(),
                               Value :: term(),
                               LocalEngineID :: snmp_framework_mib:engine_id().

将通知 Notification 从指定的上下文发送到在 SNMP-NOTIFICATION-MIB 中的 snmpNotifyTable 中为 NotifyName 定义的管理目标。

如果没有指定 NotifyName (或如果它是 ""),则通知将发送到所有管理目标(如下面的 Addresses)。

如果未指定 ContextName,则使用默认的 "" 上下文。

参数 Receiver 指定应将有关 Inform-Request 传递的信息发送到何处。代理发送 Inform-Request 并等待管理器的确认。Receiver 可以有三个值。

  • no_receiver - 不传递任何信息。
  • notification_delivery_info/0 - 根据此数据通过函数调用传递信息。
  • {Tag, Recv} - 信息将根据 Recv 的值通过消息或函数调用传递。

如果 Receiver 的值为 {Tag, Recv},则根据 Recv 进行传递。

  • pid() | atom() - 信息将以下列消息传递。

    • {snmp_targets, Tag, Addresses}

      这会通知用户通知已发送到的目标地址。

    • {snmp_notification, Tag, {got_response, Address}}

      这会通知用户此目标地址已确认通知。

    • {snmp_notification, Tag, {no_response, Address}}

      这会通知用户此目标地址未确认通知。

    通知会以 Inform-Request 的形式发送到 Addresses 中的每个目标地址。如果没有发送 Inform-Request 的目标,则 Addresses 为空列表 []

    receiver 将首先收到 snmp_targets 消息,然后对于 Addresses 列表中的每个地址,会收到两条 snmp_notification 消息中的一条。

  • {Mod, Func, Args} - 信息将通过函数调用传递。

    Mod:Func([Msg | Args])

    其中 Msg 的内容和用途与上述消息相同。

Address 是管理目标地址,Addresses 是管理目标地址列表。它们的定义如下:

        Addresses  = [address()]
        Address    = address()
        address()  = v1_address() | v3_address()
        v1_address() = {TDomain, TAddress}
        v3_address() = {{TDomain, TAddress}, V3MsgData}
        TDomain    = tdoamin()
        TAddress   = taddress()
        tdomain()  = The oid of snmpUDPDomain
                     This is the only supported transport domain.
        taddress() = [A1, A2, A3, A4, P1, P3]
                     The 4 first bytes makes up the IP-address and the last 2,
                     the UDP-port number.
        V3MsgData  = v3_msg_data()
        v3_msg_data() = term()

如果 Receiver 是一个 notification_delivery_info/0 记录,则有关通知传递的信息将通过 snmpa_notification_delivery_info_receiver 行为定义的,根据 notification_delivery_info/0 记录内容的回调函数,传递给 receiver

可选参数 Varbinds 定义通知中对象的值。如果未提供对象的值,则 Agent 执行 get 操作以检索该值。

VarbindsVarbind 的列表,其中每个 Varbind 是以下之一:

  • {Variable, Value},其中 Variable 是通知规范中引用的标量变量的符号名称。
  • {Column, RowIndex, Value},其中 Column 是列变量的符号名称。RowIndex 是指定元素的索引列表。 如果是这种情况,则在通知中发送的 OBJECT IDENTIFIER 是附加到表列的 OBJECT IDENTIFIER 的 RowIndex。这是指定元素的 OBJECT IDENTIFIER。
  • {OID, Value},其中 OID 是对象实例(标量变量或列变量)的 OBJECT IDENTIFIER。

例如,要指定 sysLocation 在通知中的值为 "upstairs",我们可以使用以下之一:

  • {sysLocation, "upstairs"} 或者
  • {[1,3,6,1,2,1,1,6,0], "upstairs"} 或者
  • {?sysLocation_instance, "upstairs"}(前提是包含生成的 .hrl 文件)

如果通知中的变量是表元素,则必须在 Varbinds 列表中给出该元素的 RowIndex。在这种情况下,通知中发送的 OBJECT IDENTIFIER 是标识此元素的 OBJECT IDENTIFIER。此 OBJECT IDENTIFIER 可以在以后的 get 操作中使用。

此函数是异步的,不返回任何信息。如果发生错误,则会调用错误报告模块的 user_err/2,并且通知将被丢弃。

注意

请注意,LocalEngineID 参数的使用仅适用于特殊情况,即如果代理要“模拟”多个 EngineID!默认情况下,代理使用 SnmpEngineID 的值(请参阅 SNMP-FRAMEWORK-MIB)。

ExtraInfo 通常不会被代理以任何方式使用。它旨在传递给 net-if 进程,这是一个用户可以自行实现的组件。用户自己的 net-if 可能会使用 ExtraInfo。此应用程序提供的 net-if 不会处理 ExtraInfo。

但有一个例外。 任何 包含原子 snmpa_default_notification_extra_info 的元组,在此上下文中都将被视为属于此应用程序,并且可以由代理处理。

-spec set_log_type(NewType) -> {ok, OldType} | {error, Reason}
                      when NewType :: snmp:atl_type(), OldType :: snmp:atl_type(), Reason :: term().

等效于 set_log_type/2

此函数的链接

set_log_type(Agent, NewType)

查看源代码
-spec set_log_type(Agent, NewType) -> {ok, OldType} | {error, Reason}
                      when
                          Agent :: pid() | AgentName,
                          AgentName :: atom(),
                          NewType :: snmp:atl_type(),
                          OldType :: snmp:atl_type(),
                          Reason :: term().

更改运行时审核跟踪日志类型。

请注意,这不会影响配置文件定义的应用程序配置,因此节点重启会将配置恢复为这些文件中的内容。

此函数主要用于测试/调试场景。

此函数的链接

set_request_limit(NewLimit)

查看源代码
-spec set_request_limit(NewLimit) -> {ok, OldLimit} | {error, Reason}
                           when
                               NewLimit :: infinity | non_neg_integer(),
                               OldLimit :: infinity | non_neg_integer(),
                               Reason :: term().

等效于 set_request_limit/2

此函数的链接

set_request_limit(Agent, NewLimit)

查看源代码
-spec set_request_limit(Agent, NewLimit) -> {ok, OldLimit} | {error, Reason}
                           when
                               Agent :: pid() | AgentName,
                               AgentName :: atom(),
                               NewLimit :: infinity | non_neg_integer(),
                               OldLimit :: infinity | non_neg_integer(),
                               Reason :: term().

更改请求限制。

请注意,这不会影响配置文件定义的应用程序配置,因此节点重启会将配置恢复为这些文件中的内容。

此函数主要用于负载调节场景。

此函数的链接

unload_mib(Mib)

查看源代码 (自 OTP R16B02 起)
-spec unload_mib(Mib) -> ok | {error, Reason} when Mib :: string(), Reason :: not_loaded | term().

等效于 unload_mib/2

此函数的链接

unload_mib(Agent, Mib)

查看源代码 (自 OTP R16B02 起)
-spec unload_mib(Agent, Mib) -> ok | {error, Reason}
                    when
                        Agent :: pid() | AgentName,
                        AgentName :: atom(),
                        Mib :: string(),
                        Reason :: not_loaded | term().

从代理中卸载单个 Mib

-spec unload_mibs(Mibs) -> ok | {error, Reason}
                     when
                         Mibs :: [MibName],
                         MibName :: string(),
                         Reason :: {'unload aborted at', MibName, InternalReason},
                         InternalReason :: not_loaded | term().

等效于 unload_mibs/3

-spec unload_mibs(Agent, Mibs) -> ok | {error, Reason}
                     when
                         Agent :: pid() | AgentName,
                         AgentName :: atom(),
                         Mibs :: [MibName],
                         MibName :: string(),
                         Reason :: {'unload aborted at', MibName, InternalReason},
                         InternalReason :: not_loaded | term();
                 (Mibs, Force) -> ok | {error, Reason}
                     when
                         Mibs :: [MibName],
                         MibName :: string(),
                         Force :: boolean(),
                         Reason :: {'unload aborted at', MibName, InternalReason},
                         InternalReason :: not_loaded | term().

等效于 unload_mibs/3

此函数的链接

unload_mibs(Agent, Mibs, Force)

查看源代码 (自 OTP R16B02 起)
-spec unload_mibs(Agent, Mibs, Force) -> ok | {error, Reason}
                     when
                         Agent :: pid() | AgentName,
                         AgentName :: atom(),
                         Mibs :: [MibName],
                         MibName :: string(),
                         Force :: boolean(),
                         Reason :: {'unload aborted at', MibName, InternalReason},
                         InternalReason :: not_loaded | term().

从代理中卸载 Mibs。 如果它无法卸载所有 MIB(Force 参数的默认值为 false),它将指示卸载中止的位置。

如果 Force = true,则即使在卸载上一个 MIB 失败后,代理也会继续尝试卸载每个 MIB。请谨慎使用。

此函数的链接

unregister_notification_filter(Id)

查看源代码
-spec unregister_notification_filter(Id) -> ok | {error, Reason}
                                        when Id :: nfilter_id(), Reason :: term().

等效于 unregister_notification_filter/2

此函数的链接

unregister_notification_filter(Agent, Id)

查看源代码
-spec unregister_notification_filter(Agent, Id) -> ok | {error, Reason}
                                        when
                                            Agent :: pid() | AgentName,
                                            AgentName :: atom(),
                                            Id :: nfilter_id(),
                                            Reason :: term().

取消注册通知过滤器。

此函数的链接

unregister_subagent(Agent, SubAgentOidOrPid)

查看源代码
-spec unregister_subagent(Agent, SubAgentOidOrPid) -> ok | {error, Reason}
                             when
                                 Agent :: pid() | AgentName,
                                 AgentName :: atom(),
                                 SubAgentOidOrPid :: snmp:oid() | pid(),
                                 Reason :: term().

取消注册子代理。 如果第二个参数是 pid,则将从 Agent 中的所有树中取消注册该子代理。

此函数的链接

update_mibs_cache_age(Age)

查看源代码
-spec update_mibs_cache_age(Age) -> ok | {error, Reason} when Age :: pos_integer(), Reason :: term().

等效于 update_mibs_cache_age/2

此函数的链接

update_mibs_cache_age(Agent, Age)

查看源代码
-spec update_mibs_cache_age(Agent, Age) -> ok | {error, Reason}
                               when
                                   Agent :: pid() | AgentName,
                                   AgentName :: atom(),
                                   Age :: pos_integer(),
                                   Reason :: term().

更改 MIB 服务器缓存的 age 属性。

此函数的链接

update_mibs_cache_gclimit(GcLimit)

查看源代码
-spec update_mibs_cache_gclimit(GcLimit) -> ok | {error, Reason}
                                   when GcLimit :: pos_integer(), Reason :: term().

等效于 update_mibs_cache_gclimit/2

此函数的链接

update_mibs_cache_gclimit(Agent, GcLimit)

查看源代码
-spec update_mibs_cache_gclimit(Agent, GcLimit) -> ok | {error, Reason}
                                   when
                                       Agent :: pid() | AgentName,
                                       AgentName :: atom(),
                                       GcLimit :: pos_integer(),
                                       Reason :: term().

更改 mib 服务器缓存的 gclimit 属性。

此函数的链接

verbosity(Target, Verbosity)

查看源代码
-spec verbosity(Target, Verbosity) -> snmp:void()
                   when
                       Target :: all | LogicalName | PidOrAgentName,
                       LogicalName :: net_if | note_store | mib_server | symbolic_store | local_db,
                       PidOrAgentName :: pid() | master_agent | atom(),
                       Verbosity :: SNMPVerb | SubAgent,
                       SNMPVerb :: snmp:verbosity(),
                       SubAgent :: {subagents, snmp:verbosity()}.

设置指定进程的“verbosity”(详细程度)

  • all - 为所有代理进程设置详细程度;net_if、note_store、mib_server、symbolic_store、local_db 和 master_agent(以及子代理)。

  • net_if - 为 net-if 进程设置详细程度。

  • note_store - 为 note store 进程设置详细程度。

  • mib_server - 为 mib server 进程设置详细程度。

  • symbolic_store - 为 symbolic store 进程设置详细程度。

  • local_db - 为 local-db 进程设置详细程度。

  • master_agent | pid()Verbosity = {subagents, snmp:verbosity()} 时 - 为此(主)代理控制的所有子代理设置详细程度。

  • master_agent | pid() | atom() - 为代理进程设置详细程度。

以下文本记录了预期的输入-输出关系

  • 如果 Target :: all | net_if | note_store | mib_server | symbolic_store | local_db,则 Verbosity :: snmp:verbosity()

  • 如果 Target :: master_agent,则 Verbosity :: {subagents, snmp:verbosity()}

如果 `Target :: pid()atom()`,
则 `Verbosity :: snmp:verbosity(){subagents, snmp:verbosity()}`。
-spec whereis_mib(MibName) -> {ok, MibFile} | {error, Reason}
                     when MibName :: atom(), MibFile :: string(), Reason :: term().

等同于 whereis_mib/2

此函数的链接

whereis_mib(Agent, MibName)

查看源代码
-spec whereis_mib(Agent, MibName) -> {ok, MibFile} | {error, Reason}
                     when
                         Agent :: pid() | AgentName,
                         AgentName :: atom(),
                         MibName :: atom(),
                         MibFile :: string(),
                         Reason :: term().

获取(已编译的)mib 文件的完整路径。

-spec which_aliasnames() -> AliasNames when AliasNames :: [AliasName], AliasName :: atom().

检索代理已知的所有别名。

-spec which_mibs() -> Mibs when Mibs :: [{MibName, MibFile}], MibName :: atom(), MibFile :: string().

等同于 which_mibs/1

-spec which_mibs(Agent) -> Mibs
                    when
                        Agent :: pid() | AgentName,
                        AgentName :: atom(),
                        Mibs :: [{MibName, MibFile}],
                        MibName :: atom(),
                        MibFile :: string().

检索加载到此代理中的所有 mib 的列表。默认是主代理。

此函数的链接

which_mibs_cache_size()

查看源代码 (自 OTP R14B 起)
-spec which_mibs_cache_size() -> {ok, Size} | {error, Reason}
                               when Size :: non_neg_integer(), Reason :: term().

等同于 which_mibs_cache_size/1

此函数的链接

which_mibs_cache_size(Agent)

查看源代码 (自 OTP R14B 起)
-spec which_mibs_cache_size(Agent) -> {ok, Size} | {error, Reason}
                               when
                                   Agent :: pid() | AgentName,
                                   AgentName :: atom(),
                                   Size :: non_neg_integer(),
                                   Reason :: term().

检索 mib 服务器缓存的大小。

此函数的链接

which_notification_filter()

查看源代码
-spec which_notification_filter() -> Filters when Filters :: [FilterId], FilterId :: nfilter_id().

等同于 which_notification_filter/1

此函数的链接

which_notification_filter(Agent)

查看源代码
-spec which_notification_filter(Agent) -> Filters
                                   when
                                       Agent :: pid() | AgentName,
                                       AgentName :: atom(),
                                       Filters :: [FilterId],
                                       FilterId :: nfilter_id().

列出代理中的所有通知过滤器。

-spec which_notifications() -> Notifications
                             when
                                 Notifications :: [{Name, MibName, Info}],
                                 Name :: atom(),
                                 MibName :: atom(),
                                 Info :: term().

检索代理已知的所有通知(和陷阱)。

-spec which_tables() -> Tables when Tables :: [Table], Table :: atom().

检索代理已知的所有表。

此函数的链接

which_transports()

查看源代码 (自 OTP 23.3 起)
-spec which_transports() -> Transports
                          when
                              Transports :: [Transport],
                              Transport :: {TDomain, TAddress} | {TDomain, TAddress, Kind},
                              TDomain :: snmp:tdomain(),
                              TAddress :: {IpAddr, IpPort},
                              IpAddr :: inet:ip_address(),
                              IpPort :: inet:port_number(),
                              Kind :: transport_kind().

检索所有已配置的传输。

-spec which_variables() -> Variables when Variables :: [Variable], Variable :: atom().

检索代理已知的所有变量。