snmptrap、snmpinform和snmptrapd的詳細介紹及其用法

這些命令程序是: snmptrap、snmpinform和snmptrapd。其中:
  • snmptrap:能夠模擬snmp agent發送一個trap到snmp管理端(通常稱爲網管,snmp manager或snmp client);
  • snmpinform: 能夠模擬snmp agent發送一個inform request到snmp管理端(Trap是發送給SNMP管理者的通知網絡情況等的警告消息,而Inform是須要SNMP管理者確認接收的Trap。 與Inform 相比較,Trap通知方式爲不可靠傳輸,由於snmp管理端在收到一條Trap通知後無需回覆任何確認信息,因此snmp agent沒法知道Trap通知是否已經被snmp管理端正確接收);
  • snmptrapd:一個模擬snmp管理端接收trap/inform通知的程序;

由上可見,經過上述3個命令程序,咱們能夠研究snmp的trap行爲及其報文,若是你正在開發snmp agent的trap功能但又沒有snmp管理端,這3個程序則可幫上你的大忙。下面詳細介紹這3個命令程序的具體用法。 html

snmptrapd的配置及其使用 node

snmptrapd.conf文件 git

跟snmp agent同樣,snmptrapd也須要一個配置文件才能運行,不然會提示不能接收trap的信息。snmptrapd所需的配置文件名稱 爲:snmptrapd.conf,安裝net-snmp後,默認是沒有這個配置文件的,所以須要新建此文件。snmptrapd.conf文件可放在 net-snmp的安裝路徑下,也可放在其它路徑中,但須要在啓動運行時指定該文件。創建後,添加以下文件內容: ubuntu

[plain] view plain copy
  1. authCommunity log,execute,net public  
上面語句指明以「public」爲「community」請求的snmp 「notification」容許的操做[見參考資料2]。上面添加的是比較簡單的配置,但可以使snmptrapd程序運行起來並正確接收trap包。 snmptrapd.conf文件更詳細的配置及其解釋參考資料[1]。

運行snmptrapd程序 網絡

[plain] view plain copy
  1. sudo snmptrapd -C -c Documents/snmptrapd.conf -df -Lo  

上面命令中的選項表示:
  • -C : 表示不使用net-snmp默認路徑下的配置文件snmptrapd.conf;
  • -c : 指定snmptrapd.conf文件;
  • -d : 顯示收到和發送的數據報,經過這個選項能夠看到數據報文;
  • -f  : 默認狀況下,snmptrapd是在後臺中運行的,加上這個選項,表示在前臺運行;
  • -L : 指定日誌記錄在哪裏,後面的o表示直接輸出到屏幕上,若是是跟着f表示日誌記錄到指定的文件中;

可經過snmptrapd -h查看命令幫助瞭解該命令的使用。 app

 snmptrap的使用方法 dom

 snmptrap可模擬發送不一樣snmp協議版本的trap包。各協議版本的snmptrap使用方法略有不一樣。 ui

發送V1版本trap報文的方法 this

[plain] view plain copy
  1. sudo snmptrap -v1 -c public 10.10.12.219 1.3.6.1.4.1.1 10.10.12.219 2 3 1000 1.3.6.1.9.9.44.1.2.1 i 12 1.3.4.1.2.3.1 s test_snmptrap  

上面指令各項參數的意思分別爲:
snmptrap -v1 -c public 10.10.12.219 1.3.6.1.4.1.1 10.10.12.219 2 3 1000
命令 Snmp協議版本 共同體 Snmp管理端IP  Enterprise-OID Snmp代理IP Trap類型  Trap特徵碼 uptime

 

1.3.6.1.9.9.44.1.2.1 I 12 12 1.3.4.1.2.3.1 s test_snmptrap
被髮送參數的OID 數據類型 數據值 被髮送參數的OID 數據類型 數據值

 

上面中,snmptrapd和snmptrap都在虛擬Ubuntu中執行的,因此snmp管理端IP和snmp代理IP同樣。執行後,在執行snmptrapd的窗口中可接收到數據,以下: spa

04 01 01 40  04 0A 0A 0C  DB 02 01 02    .+…..@……..
0032: 02 01 03 43  02 03 E8 30  29 30 0E 06  09 2B 06 01    …C…0)0…+..
0048: 09 09 2C 01  02 01 02 01  0C 30 17 06  06 2B 04 01    ..,……0…+..
0064: 02 03 01 04  0D 74 65 73  74 5F 73 6E  6D 70 74 72    …..test_snmptr
0080: 61 70                                                 ap

2013-03-23 17:44:32 ubuntu.local [10.10.12.219] (via UDP: [10.10.12.219]:52930) TRAP, SNMP v1, community public
 SNMPv2-SMI::enterprises.1 Link Down Trap (3) Uptime: 0:00:10.00
 SNMPv2-SMI::internet.9.9.44.1.2.1 = INTEGER: 12 SNMPv2-SMI::org.4.1.2.3.1 = STRING: 「test_snmptrap」

snmptrapd接收到一個trap類型爲2即Link Down類型,特徵碼爲3的trap包。

發送V2版本trap報文的方法

從上面可看到,發送V1版本的trap包有較多的參數,如uptime等,而在V 2c版本中則交給了指令程序去作。

[plain] view plain copy
  1. sudo snmptrap -v 2c -c public 10.10.12.219 "aaa" 1.3.6.1.4.1.2345 SNMPv2-MIB::sysLocation.0 s "just here"  

上面指令各項參數的意思分別爲:
  • 10.10.12.219 「aaa」:分別是snmp代理的IP和主機名稱,主機名稱能夠爲空;
  • 1.3.6.1.4.1.2345:企業OID,Enterprise-OID;
  • SNMPv2-MIB::sysLocation.0 s 「just here」:分別是:數據OID、數據類型、數據值。

使用V2c版本,是否是省了不少,不用輸入不少的參數選項。執行指令後,snmptrapd收到以下數據信息:

Received 75 bytes from UDP: [10.10.12.219]:40033
0000: 30 49 02 01  01 04 06 70  75 62 6C 69  63 A7 3C 02    0I…..public.<.
0016: 04 76 90 66  76 02 01 00  02 01 00 30  2E 30 15 06    .v.fv……0.0..
0032: 0A 2B 06 01  06 03 01 01  04 01 00 06  07 2B 06 01    .+………..+..
0048: 04 01 92 29  30 15 06 08  2B 06 01 02  01 01 06 00    …)0…+…….
0064: 04 09 6A 75  73 74 20 68  65 72 65                    ..just here

2013-03-24 10:35:50 ubuntu.local [UDP: [10.10.12.219]:40033]:
SNMPv2-MIB::snmpTrapOID.0 = OID: SNMPv2-SMI::enterprises.2345 SNMPv2-MIB::sysLocation.0 = STRING: just here

 snmpinform的使用方法

snmpinform的使用跟snmptrap的使用方法是同樣的,在這裏就很少介紹和說明了。最後,貼上它們的使用幫助信息:

USAGE: snmptrap [OPTIONS] AGENT TRAP-PARAMETERS

  Version:  5.3.0.1
  Web:      http://www.net-snmp.org/
  Email:    net-snmp-coders@lists.sourceforge.net

OPTIONS:
  -h, –help  display this help message
  -H   display configuration file directives understood
  -v 1|2c|3  specifies SNMP version to use
  -V, –version  display package version number
SNMP Version 1 or 2c specific
  -c COMMUNITY  set the community string
SNMP Version 3 specific
  -a PROTOCOL  set authentication protocol (MD5|SHA)
  -A PASSPHRASE  set authentication protocol pass phrase
  -e ENGINE-ID  set security engine ID (e.g. 800000020109840301)
  -E ENGINE-ID  set context engine ID (e.g. 800000020109840301)
  -l LEVEL  set security level (noAuthNoPriv|authNoPriv|authPriv)
  -n CONTEXT  set context name (e.g. bridge1)
  -u USER-NAME  set security name (e.g. bert)
  -x PROTOCOL  set privacy protocol (DES|AES)
  -X PASSPHRASE  set privacy protocol pass phrase
  -Z BOOTS,TIME  set destination engine boots/time
General communication options
  -r RETRIES  set the number of retries
  -t TIMEOUT  set the request timeout (in seconds)
Debugging
  -d   dump input/output packets in hexadecimal
  -D TOKEN[,...] turn on debugging output for the specified TOKENs
      (ALL gives extremely verbose debugging output)
General options
  -m MIB[:...]  load given list of MIBs (ALL loads everything)
  -M DIR[:...]  look in given list of directories for MIBs
  -P MIBOPTS  Toggle various defaults controlling MIB parsing:
     u:  allow the use of underlines in MIB symbols
     c:  disallow the use of 「–」 to terminate comments
     d:  save the DESCRIPTIONs of the MIB objects
     e:  disable errors when MIB symbols conflict
     w:  enable warnings when MIB symbols conflict
     W:  enable detailed warnings when MIB symbols conflict
     R:  replace MIB symbols from latest module
  -O OUTOPTS  Toggle various defaults controlling output display:
     0:  print leading 0 for single-digit hex characters
     a:  print all strings in ascii format
     b:  do not break OID indexes down
     e:  print enums numerically
     E:  escape quotes in string indices
     f:  print full OIDs on output
     n:  print OIDs numerically
     q:  quick print for easier parsing
     Q:  quick print with equal-signs
     s:  print only last symbolic element of OID
     S:  print MIB module-id plus last element
     t:  print timeticks unparsed as numeric integers
     T:  print human-readable text along with hex strings
     u:  print OIDs using UCD-style prefix suppression
     U:  don’t print units
     v:  print values only (not OID = value)
     x:  print all strings in hex format
     X:  extended index format
  -I INOPTS  Toggle various defaults controlling input parsing:
     b:  do best/regex matching to find a MIB node
     h:  don’t apply DISPLAY-HINTs
     r:  do not check values for range/type legality
     R:  do random access to OID labels
     u:  top-level OIDs must have ‘.’ prefix (UCD-style)
     s SUFFIX:  Append all textual OIDs with SUFFIX before parsing
     S PREFIX:  Prepend all textual OIDs with PREFIX before parsing
  -L LOGOPTS  Toggle various defaults controlling logging:
     e:           log to standard error
     o:           log to standard output
     n:           don’t log at all
     f file:      log to the specified file
     s facility:  log to syslog (via the specified facility)

     (variants)
     [EON] pri:   log to standard error, output or /dev/null for level ‘pri’ and above
     [EON] p1-p2: log to standard error, output or /dev/null for levels ‘p1′ to ‘p2′
     [FS] pri token:    log to file/syslog for level ‘pri’ and above
     [FS] p1-p2 token:  log to file/syslog for levels ‘p1′ to ‘p2′
  -C APPOPTS  Set various application specific behaviour:
     i:  send an INFORM instead of a TRAP

  -v 1 TRAP-PARAMETERS:
  enterprise-oid agent trap-type specific-type uptime [OID TYPE VALUE]…
  or
  -v 2 TRAP-PARAMETERS:
  uptime trapoid [OID TYPE VALUE] …

若是還不明白的,能夠看一下下面的參考資料,或許對你有幫助。

參考資料

相關文章
相關標籤/搜索