• snmptt conf配置文件详解


    SNMPTT.CONF 配置文件格式

    配置文件(通常/etc/snmp/snmptt.conf 或者c:\snmpsnmptt.conf)包含了一列已定义的traps。
    如果你的snmptt.conf文件比较大,可以将其细分为多个文件,将这些配置文件包含在snmptt.ini文件中的snmptt_conf_files部分,如:

     snmptt_conf_files = < /etc/snmp/snmptt.conf.generic
     /etc/snmp/snmptt.conf.compaq
     /etc/snmp/snmptt.conf.cisco
     /etc/snmp/snmptt.conf.hp
     /etc/snmp/snmptt.conf.3com
     END
    

    snmptt.conf文件的语法为:

     EVENT event_name event_OID "category" severity
     FORMAT format_string
     [EXEC command_string]
     [NODES sources_list]
     [MATCH [MODE=[or | and]] | [$n:[!][(    ) | n | n-n | > n | < n | x.x.x.x | x.x.x.x-x.x.x.x | x.x.x.x/x]]
     [REGEX (    )(    )[i][g][e]]
     [SDESC]
     [EDESC]
    

    注:EVENT和FORMAT行是必须的。在[]中的命令是可选的。不要在配置文件中包含[]s

    1. EVENT

    EVENT event_name event_OID "category" severity
    event_name:
    不能包含空格。当使用snmpttconvertmib转换时,这个名字将与MIB文件中TRAP-TYPE或者NOTIFICATION-TYPE行的名字匹配
    event_OID:
    一般形式如:.1.3.6.1.4.1.232.0.11001
    如果Net-SNMP perl模块安装,并且在snmptt.ini文件中设置了net_snmp_perl_enable为开启,则可以使用符号名,如:
    linkDown
    IF-MIB::linkDown
    注:当翻译OID时,Net-SNMP 5.0.9 和更早的版本不支持包含模块名字(如:IF-MIB::) 。SNMP V1 traps 的企业ID格式为(.1.3.6.1.4.1.232) ,后面跟上一个0,再跟上trap号(11001)。这样可能导致在配置文件中相同的trap OID存在多条定义。如果在snmptt.ini文件中允许了multiple_event,那么将处理所有匹配的traps。如果multiple_event禁止,只有第一个匹配的条目被使用

    OID中可以使用通配符,例如:.1.3.6.1.4.1.232.1.2.*
    category:
    特色字符串包含在双引号中。如果为“IGNORE”,则snmptt.conf中包含的FORMAT和EXEC都忽略。
    如果类型为“LOGONLY”,则trap信息被日志记录,EXEC声明被忽略。
    注:如果你打算使用Naigos等外部程序,则最好不要设置任何trap为LOGONLY,就好像不要使用EXEC来进行被动服务检查。
    severity
    事件的级别,用于日志。如:Minor,Major,Normal,Critical,Warning。

    2 FORMAT

    FORMAT format_string
    每个EVENT只能有一行FORMAT
    使用如下的变量在字符串上进行变量替换:

     $A - Trap agent host name (see Note 1)
     $aA - Trap agent IP address
     $Be - securityEngineID (snmpEngineID) (see Note 7)
     $Bu - securityName (snmpCommunitySecurityName) (see Note 7)
     $BE - contextEngineID (snmpCommunityContextEngineID) (see Note 7)
     $Bn - contextName (snmpCommunityContextName) (see Note 7)
     $c - Category
     $C - Trap community string
     $D - Description text from SNMPTT.CONF or MIB file (see Note 6)
     $E - Enterprise trap OID in symbolic format
     $e  - Enterprise trap OID in number format
     $Fa  - alarm (bell) (BEL)
     $Ff  - form feed (FF)
     $Fn  - newline (LF, NL)
     $Fr  - return (CR)
     $Ft  - tab (HT, TAB)
     $Fz  - Translated FORMAT line (EXEC only)
     $G  - Generic trap number (0 if enterprise trap)
     $H  - Host name of the system running SNMPTT
     $S  - Specific trap number (0 if generic trap)
     $N  - Event name defined in .conf file of matched entry
     $i  - Event OID defined in .conf file of matched entry (could be a wildcard OID)
     $O - Trap OID in symbolic format (see Note 4)
     $o - Trap OID in numerical format (see Note 4)
     $R, $r  - Trap hostname (see Note 1)
     $aR, $ar - IP address
     $s  - Severity
     $T  - Uptime:  Time since network entity was initialized
     $X  - Time trap was spooled (daemon mode) or current time (standalone mode)
     $x  - Date trap was spooled (daemon mode) or current date (standalone mode)
     $# - Number of (how many) variable-bindings in the trap
     $$  - Print a $
     $@ - Number of seconds since the epoch of when the trap was spooled (daemon mode) or the current time (standalone mode)
     $n  - Expand variable-binding n (1-n) (see Note 2,5)
     $+n  - Expand variable-binding n (1-n) in the format of variable name:value (see Note 2,3,5)
     $-n  - Expand variable-binding n (1-n) in the format of variable name (variable type):value (see Note 2,3,5)
     $vn  - Expand variable name of the variable-binding n (1-n)(see Note 3)
     $*  - Expand all variable-bindings (see Note 5)
     $+*  - Expand all variable-bindings in the format of variable name:value (see Note 2,3,5)
     $-*  - Expand all variable-bindings in the format of variable name (variable type):value (see Note 2,3,5)
    

    注2: 如果snmptt.ini文件中的translate_integers被允许,SNMPTT将尝试查找MIB文件,将收到的trap中的数字转换为文本。为了使这个功能可用还有如下条件需要满足:必须安装了Net-SNMP/UCD-SNMP模块,并在snmptt.ini文件中开启了net_snmp_perl_enable选项。另外,为了是该功能可用,需要确保Net-SNMP/UCD-SNMP配置正确。如果选项开启,却没有将数字转换成文本,数字将会使用。如果MIB文件存在,但是却没有转换,需要在snmp.conf文件中正确配置,来处理所有的mibs。或者,你可以在snmptt.ini文件中设置mibs_enviroment变量为ALL.

    注3:如果需要vn,+n,$-n变量名和类型转换为文本,则也需要在snmptt.ini文件中开启net_snmp_perl_enable选项。 这个其实和注2一样。

    注4:如果需要将数字的OID转换为文本,需要在snmptt.ini文件中,开启translate_trap_oid选项和net_snmp_perl_enable选项,并安装了Net-SNMP/UCD-SNMP模块。

    注6:snmptt.ini文件中必须设置description_mode值为1或者2。 如果设置为1,描述从SNMPTT.CONF文件中获取。如果设置为2,描述从MIB文件中获取。

    3 EXEC

    [EXEC command_string]
    可以一个EVENT,多行EXEC。
    当一个trap接收到后,则按照顺序执行命令。
    EXEC使用的变量替换跟FORMAT行中的一样。 例如:
    EXEC /usr/bin/qpage -f TRAP alex "$r: $x $X - NIC switchover to slot $3, port $4 from slot $5, port $6"
    EXEC c:\snmp\pager netops "$r: $x $X - NIC switchover to slot $3, port $4 from slot $5, port $6"

    4 PREEXEC

    [PREEXEC command_string]
    每个EVENT,可以有多行PREEXEC
    当一个trap收到后,在FORMAT和EXEC声明执行之前,要执行得语句和命令。外部程序的输出将保存在$pn变量中,n从1开始计数。当有多行PREEXEC时,第一个PREEXEC存储结果到$p1,第二个PREEXEC将结果存在$p2。要开启这个功能,需要在snmptt.ini文件中,设置pre_exec_enable选项
    例子:

    EVENT linkDown .1.3.6.1.6.3.1.1.5.3 "Status Events" Normal
    FORMAT Link down on interface $1($p1). Admin state: $2. Operational state: $3
    PREEXEC /usr/local/bin/snmpget -v 1 -Ovq -c public $aA ifDescr.$1
    
    5 NODES

    [NODES sources_list]
    可以限制哪些设备可以映射为事件定义
    每个EVENT,可以有多个NODES行。
    sources_list中可以包含任意主机名、IP地址、网络地址或者文件名的组合。如果这个字符串被省略,则所有的设备都被接受。
    如果想192.168.1.0/24网段的设备可以触发这个EVENT, 你可以使用一条NODE语句:
    NODES 192.168.1.0/24
    这里有两种操作模式,POS(positive-默认)和NEG(negative)。如果设置为POS,那么NODES中的任何一行匹配,则允许。如果设置为NEG,只有当NODES中都不匹配时,才允许。为了改变操作模式,使用如下声明:
    NODES MODE=POS
    NODES MODE=NEG
    这个特色经常用在,对于相同的事件,一些需要按照常规处理,一些需要按照特殊处理。如
    例一
    NODES fred barney betty wilma
    例二
    NODES fred barney betty wilma
    NODES MODE=NEG

    6 MATCH

    [MATCH [MODE=[or | and]] | [$n:[!][( )[i] | n | n-n | > n | < n | x.x.x.x | x.x.x.x-x.x.x.x | x.x.x.x/x]]
    匹配这个MATCH的trap,才可以引发相应的EVENT定义。
    如果一条MATCH声明已经存在,没有trap匹配它,默认的,没有EVENT定义会被匹配。
    如下的perl正则表达式被支持:
    i – 忽略大小写
    如下的命令模式可用:

     MATCH MODE=[or | and]
     MATCH $x: [!] (reg) [i]
     MATCH $x: [!] n
     MATCH $x: [!] n-n
     MATCH $x: [!] < n
     MATCH $x: [!] > n
     MATCH $x: [!] & n
     MATCH $x: [!] x.x.x.x
     MATCH $x: [!] x.x.x.x-x.x.x.x
     MATCH $x: [!] x.x.x.x/x
     $x 是任意变量(如$3,$A等)
     reg是正则表达式
     ! 是用于negate结果(非)
     & 相当于AND
     n 是一个数字
     x.x.x.x 是IP地址
     x.x.x.x-x.x.x.x 是IP地址段
     x.x.x.x/x 是IP段
    

    注:如果为了基于IP地址/主机名来限制可以映射的EVENT的设备,推荐使用NODES关 键字。如果模式设置为’or’,只要有一条匹配,则认为结果是true;如果模式为and,只要有一 条匹配失败,则认为结果为false。在表达式中使用圆括号(),需要跟在\号之后。
    如果没有MATCH MODE=这样的行存在,默认为or。每个EVENT,只能有一条match mode存在。如果多行MATCH MODE=存在,只有最后一样被使用。
    例如:

     $2必须在1000到2000之间:MATCH $2: 1000-2000
     任何匹配(or):$3等于52,或者$4是IP地址段192.168.1.10-192.168.1.20,或者severity为Major:
      MATCH $3: 52
      MATCH $4: 192.168.1.10-192.168.1.20
      MATCH $s: (Major)
     全部匹配(and): $3大于20,$5不包含关键词alarm或者critical, $6 必须字符串’(1)remaining’ , $7 必须包含字符串’power’,不管是大写还是小写:
      MATCH $3: >20
      MATCH $5: !(alarm|critical)
      MATCH $6: (\(1\) remaining)
      MATCH $7: (power)i
      MATCH MODE=and
    
    7 REGEX

    [REGEX( )( )[i][g][e]]
    在translated FORMAT/ EXEC行 进行搜索和替换。
    多个REGEX()()行被允许。
    第一个()包含了查找的表达式;第二个()包含了替换的文本。
    如下的Perl正则表达式被支持:

    • i - 当匹配左侧时忽略大小写
    • g - 替换所有匹配的部分,而不是仅替换查找到的第一个匹配
    • e - 执行右侧的代码
      为了使用capture替换,或者e参数,需要在snmptt.ini文件中设置allow_unsafe_regex为1
      如果有多行REGEX,那么从上到下的处理,并且结果是累加的。即第二行处理第一行产生的结果。
      例1:
     处理前的FORMAT行:UPS has       detected a      building alarm.       Cause: UPS1 Alarm #14: Building alarm 3.
     REGEX (Building alarm 3)(Computer room high temperature)
     REGEX (Building alarm 4)(Moisture detection alarm)
     REGEX (roOm)(ROOM)ig
     REGEX (UPS)(The big UPS)
     REGEX (\s+)( )g
     处理后的FORMAT行:The big UPS has detected a building alarm. Cause: UPS1 Alarm #14: Computer ROOM high temperature
    

    列2:

     处理前的FORMAT行:Alarm (1) and (2) has been triggered
     
     REGEX (\(1\))(One)
     REGEX (\(2\))((Two))
     处理后的FORMAT行:Alarm One and (Two) has been triggered
    

    列3:

    如果设置了allow_unsafe_regex,那么captures可以在替换部分使用
     处理前的FORMAT行:The system has logged exception error 55 for the service testservice
     REGEX (The system has logged exception error (\d+) for the service (\w+))(Service $2 generated error $1)
     处理后的FORMAT行:Service testservice generated error 55
    

    列4:

    如果设置了allow_unsafe_regex允许,并且使用了e参数,右侧的部分被执行。
     处理前的FORMAT行:Authentication Failure Trap from IP address: C0 A8 1 FE
     REGEX (Address: (\w+)\s+(\w+)\s+(\w+)\s+(\w+))("address: ".hex($1).".".hex($2).".".hex($3).".".hex($4))ei
     处理后的FORMAT行:Authentication Failure Trap from IP address: 192.168.1.254
    
    8 SDESC EDESC

    这两个标识符之间的是描述,会被snmptt忽略。

    Tips1 SNMPTT.CONF 配置文件Notes

    当在配置文件中对相同的trap存在多个定义时,如下的规则被应用:
    A match occurs when:

    • 接收到的trap的OID匹配配置文件中定义的OID
    • AND(当主机名匹配NODES中定义的主机名,或者没有NODES定义)
    • AND(MATCH部分匹配为true ,或者没有MATCH条目)

    如果在snmptt.ini文件中设置multiple_event为1:

    • 一个trap匹配配置文件中的多个定义,则被处理多次
    • 如果所有的精确匹配都符合,那么通配符匹配将不执行
    • 如果一个精确匹配不存在,通配符匹配被执行,假如(主机名匹配NODES中定义的主机或者没有NODES定义)和(MATCH部分匹配为真或者没有MATCH定义)

    如果snmptt.ini文件中设置multiple_event 为0:

    • trap匹配到的第一个定义被处理
    • 如果一个精确匹配存在,通配符匹配将不执行
    • 如果一个精确匹配不存在,通配符匹配被执行,假如主机名匹配NODES中定义的主机或者没有NODES定义)和(MATCH部分匹配为真或者没有MATCH定义)
  • 相关阅读:
    Cookie与session
    orm之中介模型
    mysql数据库基础命令——幕布链接
    css——幕布链接
    HTML基础——幕布链接
    js基础——幕布
    三层结构与MVC
    [C++]3-1 得分(Score ACM-ICPC Seoul 2005,UVa1585)
    [C++]环状序列(CircularSequence,ACM/ICPC Seoul 2004,UVa1584)
    [C++]猜数字游戏的提示(Master-Mind Hints,UVa340)
  • 原文地址:https://www.cnblogs.com/A121/p/16583628.html
Copyright © 2020-2023  润新知