查看源码 管理器配置文件定义
配置数据可以包含在位于配置目录中的配置文件中。该目录的名称在 config_dir
配置参数中给出。这些文件在启动时读取。
配置文件的所在目录作为参数传递给管理器。
所有文件中的条目格式都是 Erlang 项,用 '.' 和换行符分隔。在以下章节中,将描述这些项的格式。注释可以指定为普通的 Erlang 注释。
如果在这些文件中发现语法错误,它们将在启动时通过 错误报告模块 的 config_err/2
函数报告。
管理器信息
管理器信息应存储在名为 manager.conf
的文件中。
每个条目是一个大小为二的元组
{变量, 值}.
变量
是以下之一transports
- 它定义了管理器的传输域及其地址。必选值
是{域, 地址}
元组或域
原子列表。域
是transportDomainUdpIpv4
或transportDomainUdpIpv6
之一。地址
对于当前支持的域,要么是IpAddr
,要么是{IpAddr, IpPort}
元组。IpAddr
要么是常规的 Erlang/OTPip_address()
,要么是传统的 SNMP 整数列表,而IpPort
是一个整数。当
地址
不包含端口号时,将使用port
的值。当未指定
地址
时,即仅使用域
原子时,主机的名称将被解析以查找 IP 地址,并使用port
的值。
port
- 它定义了管理器用于与代理通信的 UDP 端口。如果transports
没有为每个传输定义端口号,则必选。engine_id
- 如 SNMP-FRAMEWORK-MIB 中定义的SnmpEngineID
。必选。max_message_size
- 如 SNMP-FRAMEWORK-MIB 中定义的snmpEngineMaxMessageSize
。必选。
值
是变量的值。
仍然支持旧版和中间变量 address
和 domain
,因此旧的配置将起作用。
以下示例显示了一个 manager.conf
文件
{transports, [{transportDomainUdpIpv4, {{141,213,11,24}, 5000}},
{transportDomainUdpIpv6, {{0,0,0,0,0,0,0,1}, 5000}}]}.
{engine_id, "mgrEngine"}.
{max_message_size, 484}.
engine_id
的值是一个字符串,它应该具有非常特定的结构。有关详细信息,请参见 RFC 2271/2571。
用户
对于每个管理器用户,管理器需要一些信息。此信息可以添加到 users.conf
配置文件中,也可以通过在运行时调用 register_user 函数添加。
每一行定义管理器的管理器用户。
每个条目是一个大小为四的元组
{用户ID, 用户模块, 用户数据, 默认代理配置}.
用户ID
是任何项(用于唯一标识用户)。用户模块
是用户回调模块(原子)。用户数据
是任何项(在调用用户模块
时传递给用户)。默认代理配置
是默认代理配置的列表。当此用户注册代理时,这些值将用作默认值。
代理
处理代理所需的信息应存储在名为 agents.conf
的文件中。也可以通过调用 register_agent 在运行时添加代理。
每个条目是一个元组
{用户ID, 目标名称, 社区, 域, 地址, 引擎ID, 超时, 最大消息大小, 版本, 安全模型, 安全名称, 安全级别}.
用户ID
是负责此代理的管理器用户的标识(项)。目标名称
是一个唯一的、非空字符串。社区
是社区字符串(字符串)。域
是传输域,可以是transportDomainUdpIpv4
或transportDomainUdpIpv6
。地址
是传输域中的地址,可以是{IpAddr, IpPort}
元组,也可以是包含端口号的传统 SNMP 整数列表。IpAddr
要么是常规的 Erlang/OTPip_address()
,要么是不包含端口号的传统 SNMP 整数列表,而IpPort
是一个整数。引擎ID
是代理的引擎 ID(字符串)。超时
是重传超时(infinity
| 整数)。最大消息大小
是发送到此代理的出站消息的最大消息大小(整数)。版本
是版本(v1 | v2 | v3)。安全模型
是安全模型(any | v1 | v2c | usm)。安全名称
是安全名称(字符串)。安全级别
是安全级别(noAuthNoPriv | authNoPriv | authPriv)。
仍然可以使用不带 域
元素,以及带有所有 TDomain
、Ip
和 Port
元素的元组的旧版配置。
USM 的安全数据
有关 USM 的安全数据的信息应存储在名为 usm.conf
的文件中,如果管理器希望在与代理通信时使用 SNMPv3,则该文件必须存在。也可以通过调用 register_usm_user 在运行时添加 usm 数据。
对应的表是 SNMP-USER-BASED-SM-MIB 中的 usmUserTable
(根据 SNMP-USM-HMAC-SHA2-MIB 进行调整)。
每个条目是一个项
{引擎ID, 用户名, 认证协议, 认证密钥, 隐私协议, 隐私密钥}.
{引擎ID, 用户名, 安全名称, 认证协议, 认证密钥, 隐私协议, 隐私密钥}.
第一种情况是当我们有恒等函数 (安全名称
= 用户名
) 时。
引擎ID
是一个字符串。用户名
是一个字符串。安全名称
是一个字符串。认证协议
是usmNoAuthProtocol
、usmHMACMD5AuthProtocol
、usmHMACSHAAuthProtocol
、usmHMAC128SHA224AuthProtocol
、usmHMAC192SH256AuthProtocol
、usmHMAC256SHA384AuthProtocol
或usmHMAC384SHA512AuthProtocol
。认证密钥
是一个列表(整数)。这是用户的秘密本地化身份验证密钥。它在 MIB 中不可见。此密钥的长度(字节数)需要为- 如果为
usmHMACMD5AuthProtocol
,则为 16。 - 如果为
usmHMACSHAAuthProtocol
,则为 20。 - 如果为
usmHMAC128SHA224AuthProtocol
,则为 28。 - 如果为
usmHMAC192SHA256AuthProtocol
,则为 32。 - 如果为
usmHMAC256SHA384AuthProtocol
,则为 48。 - 如果为
usmHMAC384SHA512AuthProtocol
,则为 64。
- 如果为
隐私协议
是usmNoPrivProtocol
、usmDESPrivProtocol
或usmAesCfb128Protocol
。隐私密钥
是一个列表(整数)。这是用户的秘密本地化加密密钥。它在 MIB 中不可见。如果使用usmDESPrivProtocol
或usmAesCfb128Protocol
,则此密钥的长度需要为 16。