檢視原始碼 管理器配置檔案的定義
配置數據可以包含在位於配置目錄中的配置文件中。此目錄的名稱在 config_dir
配置參數中給定。這些文件在啟動時讀取。
找到配置文件的目錄作為參數傳遞給管理器。
所有文件中的條目格式都是 Erlang 項,以 '.' 和換行符分隔。在以下各節中,描述了這些項的格式。註解可以指定為普通的 Erlang 註解。
如果在這些文件中發現語法錯誤,則會在啟動時使用錯誤報告模組的 config_err/2
函數報告。
管理器資訊
管理器資訊應儲存在名為 manager.conf
的檔案中。
每個條目都是一個大小為二的元組
{Variable, Value}.
Variable
是以下其中之一transports
- 定義管理器的傳輸域及其地址。必填Value
是{Domain, Addr}
元組或Domain
原子(atom)的列表。Domain
是transportDomainUdpIpv4
或transportDomainUdpIpv6
其中之一。Addr
對於目前支援的域,可以是IpAddr
或{IpAddr, IpPort}
元組。IpAddr
可以是常規的 Erlang/OTPip_address()
或傳統的 SNMP 整數列表,而IpPort
則是一個整數。當
Addr
不包含埠號時,將使用port
的值。當未指定
Addr
時,即僅使用Domain
原子時,將解析主機名稱以找到 IP 地址,並使用port
的值。
port
- 定義管理器用於與代理程式通信的 UDP 埠。如果transports
未定義每個傳輸的埠號,則為必填。engine_id
- 如 SNMP-FRAMEWORK-MIB 中定義的SnmpEngineID
。必填。max_message_size
- 如 SNMP-FRAMEWORK-MIB 中定義的snmpEngineMaxMessageSize
。必填。
Value
是變數的值。
仍然支援舊版和中間變數 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 函數來添加。
每一行定義管理器的管理器使用者。
每個條目都是一個大小為四的元組
{UserId, UserMod, UserData, DefaultAgentConfig}.
UserId
可以是任何項(用於唯一標識使用者)。UserMod
是使用者回呼模組(原子)。UserData
可以是任何項(在調用UserMod
時傳遞給使用者)。DefaultAgentConfig
是預設代理程式配置的列表。當此使用者註冊代理程式時,這些值將用作預設值。
代理程式
處理代理程式所需的資訊應儲存在名為 agents.conf
的檔案中。也可以通過在運行時調用 register_agent 來添加代理程式。
每個條目都是一個元組
{UserId, TargetName, Comm, Domain, Addr, EngineID, Timeout, MaxMessageSize, Version, SecModel, SecName, SecLevel}.
UserId
是負責此代理程式的管理器使用者的身份(項)。TargetName
是一個唯一的非空字串。Comm
是社群字串(字串)。Domain
是傳輸域,可以是transportDomainUdpIpv4
或transportDomainUdpIpv6
。Addr
是傳輸域中的地址,可以是{IpAddr, IpPort}
元組或包含埠號的傳統 SNMP 整數列表。IpAddr
可以是常規的 Erlang/OTPip_address()
或不包含埠號的傳統 SNMP 整數列表,而IpPort
則是一個整數。EngineID
是代理程式的引擎 ID(字串)。Timeout
是重新傳輸逾時(infinity
| 整數)。MaxMessageSize
是傳送給此代理程式的傳出訊息的最大訊息大小(整數)。Version
是版本(v1 | v2 | v3)。SecModel
是安全模型(any | v1 | v2c | usm)。SecName
是安全名稱(字串)。SecLevel
是安全級別(noAuthNoPriv | authNoPriv | authPriv)。
仍然可以使用不含 Domain
元素的元組以及包含所有 TDomain
、Ip
和 Port
元素的舊版配置。
USM 的安全數據
有關 USM 的安全數據的資訊應儲存在名為 usm.conf
的檔案中。如果管理器希望在使用 SNMPv3 與代理程式通信時使用,則必須存在此檔案。也可以通過在運行時調用 register_usm_user 來添加 usm 數據。
相應的表是 SNMP-USER-BASED-SM-MIB 中的 usmUserTable
(根據 SNMP-USM-HMAC-SHA2-MIB 進行調整)。
每個條目都是一個項
{EngineID, UserName, AuthP, AuthKey, PrivP, PrivKey}.
{EngineID, UserName, SecName, AuthP, AuthKey, PrivP, PrivKey}.
第一種情況是當我們有身份函數時(SecName
= UserName
)。
EngineID
是一個字串。UserName
是一個字串。SecName
是一個字串。AuthP
是usmNoAuthProtocol
、usmHMACMD5AuthProtocol
、usmHMACSHAAuthProtocol
、usmHMAC128SHA224AuthProtocol
、usmHMAC192SH256AuthProtocol
、usmHMAC256SHA384AuthProtocol
或usmHMAC384SHA512AuthProtocol
。AuthKey
是一個列表(整數)。這是使用者秘密的本地身份驗證密鑰。它在 MIB 中不可見。此密鑰的長度(位元組數)需要為- 如果
usmHMACMD5AuthProtocol
,則為 16。 - 如果
usmHMACSHAAuthProtocol
,則為 20。 - 如果
usmHMAC128SHA224AuthProtocol
,則為 28。 - 如果
usmHMAC192SHA256AuthProtocol
,則為 32。 - 如果
usmHMAC256SHA384AuthProtocol
,則為 48。 - 如果
usmHMAC384SHA512AuthProtocol
,則為 64。
- 如果
PrivP
是usmNoPrivProtocol
、usmDESPrivProtocol
或usmAesCfb128Protocol
。PrivKey
是一個列表(整數)。這是使用者秘密的本地加密密鑰。它在 MIB 中不可見。如果使用usmDESPrivProtocol
或usmAesCfb128Protocol
,則此密鑰的長度需要為 16。