第一章 讓 snmpd 能動
環境
- 環境: OSX 10.9、有內建 Net-SNMP
- 服務: snmpd 用 launchctl 管理、名稱為 org.net-snmp.snmpd
- 設定檔:
- /usr/share/snmp/snmpd.conf (這個放設定值)
- /var/db/net-snmp/snmpd.conf (這個放帳號、密碼、傳輸金鑰)
- /etc/snmpd.conf (這個不要用比較好)
任務
- 使用 SNMP v3 協定
- 使用 Read-only 方式存取
- 監視 CPU、RAM、Disk、Mount Point
線索
- README.snmpv3 Net-SNMP 官方說明
- 在 OSX 啟用 SNMP 服務
snmpd 服務操作
# 停用服務
$ sudo launchctl unload /System/Library/LaunchDaemons/org.net-snmp.snmpd.plist
# 啟用服務
$ sudo launchctl load /System/Library/LaunchDaemons/org.net-snmp.snmpd.plist
# 檢查狀態
$ sudo launchctl list | grep snmp
產生 SNMP v3 用戶
- 這個作法適用於產生第一個帳號,第二個帳號不要這樣做
- 產生用戶前,需要停用 snmpd (參考前面的指令)
# 密碼和傳輸金鑰一樣
$ sudo net-snmp-create-v3-user -ro \
-a SHA -A "${pass}" \
-x AES \
${user}
# 密碼和傳輸金鑰分開
$ sudo net-snmp-create-v3-user -ro \
-a SHA -A "${pass}" \
-x AES -X "${tkey}" \
${user}
# 執行結果
adding the following line to /var/db/net-snmp/snmpd.conf:
createUser ... SHA ... AES ...
adding the following line to /usr/share/snmp/snmpd.conf:
rouser ...
測試一下
# 注意!! 這裡的 -X 參數不能省略,即使 $pass 與 $tkey 相同
$ snmpwalk -v 3 -l authPriv -u ${user} \
-a SHA -A "${pass}" \
-x AES -X "${tkey}" \
localhost .1.3.6.1.4.1.2021.11
如果成功的話,會看到長這樣的訊息
SNMPv2-MIB::sysDescr.0 = STRING: Darwin ... 14.5.0 Darwin Kernel Version 14.5.0: Thu Jun 16 19:58:21 PDT 2016; root:xnu-2782.50.4~1/RELEASE_X86_64 x86_64
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.255
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (4921) 0:00:49.21
SNMPv2-MIB::sysContact.0 = STRING: [email protected]
SNMPv2-MIB::sysName.0 = STRING: ...
SNMPv2-MIB::sysLocation.0 = STRING: Unknown
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (0) 0:00:00.00
...
如果密碼錯誤 (-A 參數)
snmpwalk: Authentication failure (incorrect password, community or key) (Sub-id not found: (top) -> system)
如果傳輸金鑰錯誤 (-X 參數)
Timeout: No Response from localhost
如果漏了傳輸金鑰 (-X 參數)
No log handling enabled - using stderr logging
snmpwalk: USM generic error (Sub-id not found: (top) -> system)