NetSNMP 用來接收 Trap 訊息的程式叫 snmptrapd,其設定檔為 snmptrapd.conf。
先打 SNMPV1/V2 的,V3 以後補。
一、設定項目
1、snmpTrapAddr udp:address:port
用來設定接收 trap 所 bind 的位置的,預定是 bind 在機器上所有 ip 的 udp 162 port 上。
2、authcommunity [ execute | ,log | ,net ] community
給 SNMPV1 / V2 用的…
execute:設定 commuinty 是否具有 Handler 的權限。
log:設定 commuinty 是否具有 Trap 紀錄在 syslog 的權限。
net:設定 commuinty 是否具有 Trap Forward 出去的權限。
community:就 community XD,別人要拿這個跟你溝通。
3、authUser [ log | ,execute | net ] username [ priv | authNoPriv | noauth ]
給 SNMPV3 用的,意思同 snmpd.conf 中的設定。
4、createUser username [ MD5 | SHA ] userpassword [ DES | AES ] privpassword
給 SNMPV3 用的,意思同 snmpd.conf 中的設定。
二、執行項目
1、traphandle OID command
這行是指定當收到 Trap 後,要進行怎樣的動作。
OID:收到指定的 OID,
command:進行怎樣的動作。
EX:
traphandle SNMPv2-MIB::coldStart /home/nba/bin/traps cold
traphandle SNMPv2-MIB::warmStart /home/nba/bin/traps warm
三、測試
1、寫一個 Script,假設是 /usr/local/bin/TrapTest.pl
use strict;
my $file = "/var/log/mytrap.log"; while ( <STDIN> ) close(LOG); |
2、編輯 snmptrapd.conf,加入下面幾行。
createUser aflyfish MD5 12345678 DES privpass
authUser log,execute aflyfish
# Default 指的是所有的 OID,收到後就丟給 TrapTest.pl。
traphandle default /usr/local/bin/TrapTest.pl
3、執行下面指令
snmptrap -v 3 -a MD5 -A 12345678 -x DES -X privpass \
-l authPriv -u aflyfish 127.0.0.1 0 linkUp.0
4、然後 cat /var/log/mytrap.log,就會看到訊息紀錄在裡面了。