配置文件(通常/etc/snmp/snmpttconf 或者c:\snmpsnmpttconf)包含了一列已定义的traps。
如果你的snmpttconf文件比较大,可以将其细分为多个文件,将这些配置文件包含在snmpttini文件中的snmptt_conf_files部分,如:
snmpttconf文件的语法为:
注:EVENT和FORMAT行是必须的。在[]中的命令是可选的。不要在配置文件中包含[]s
EVENT event_name event_OID "category" severity
event_name :
不能包含空格。当使用snmpttconvertmib转换时,这个名字将与MIB文件中TRAP-TYPE或者NOTIFICATION-TYPE行的名字匹配
event_OID :
一般形式如:136141232011001
如果Net-SNMP perl模块安装,并且在snmpttini文件中设置了net_snmp_perl_enable为开启,则可以使用符号名,如:
linkDown
IF-MIB::linkDown
注:当翻译OID时,Net-SNMP 509 和更早的版本不支持包含模块名字(如:IF-MIB::) 。SNMP V1 traps 的企业ID格式为(136141232) ,后面跟上一个0,再跟上trap号(11001)。这样可能导致在配置文件中相同的trap OID存在多条定义。如果在snmpttini文件中允许了multiple_event,那么将处理所有匹配的traps。如果multiple_event禁止,只有第一个匹配的条目被使用
OID中可以使用通配符,例如:13614123212
category :
特色字符串包含在双引号中。如果为“IGNORE”,则snmpttconf中包含的FORMAT和EXEC都忽略。
如果类型为“LOGONLY”,则trap信息被日志记录,EXEC声明被忽略。
注:如果你打算使用Naigos等外部程序,则最好不要设置任何trap为LOGONLY,就好像不要使用EXEC来进行被动服务检查。
severity :
事件的级别,用于日志。如:Minor,Major,Normal,Critical,Warning。
FORMAT format_string
每个EVENT只能有一行FORMAT
使用如下的变量在字符串上进行变量替换:
注2: 如果snmpttini文件中的translate_integers被允许,SNMPTT将尝试查找MIB文件,将收到的trap中的数字转换为文本。为了使这个功能可用还有如下条件需要满足:必须安装了Net-SNMP/UCD-SNMP模块,并在snmpttini文件中开启了net_snmp_perl_enable选项。另外,为了是该功能可用,需要确保Net-SNMP/UCD-SNMP配置正确。如果选项开启,却没有将数字转换成文本,数字将会使用。如果MIB文件存在,但是却没有转换,需要在snmpconf文件中正确配置,来处理所有的mibs。或者,你可以在snmpttini文件中设置mibs_enviroment变量为ALL
注3:如果需要 +n,$-n变量名和类型转换为文本,则也需要在snmpttini文件中开启net_snmp_perl_enable选项。 这个其实和注2一样。
注4:如果需要将数字的OID转换为文本,需要在snmpttini文件中,开启translate_trap_oid选项和net_snmp_perl_enable选项,并安装了Net-SNMP/UCD-SNMP模块。
注6:snmpttini文件中必须设置description_mode值为1或者2。 如果设置为1,描述从SNMPTTCONF文件中获取。如果设置为2,描述从MIB文件中获取。
[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"
[PREEXEC command_string]
每个EVENT,可以有多行PREEXEC
当一个trap收到后,在FORMAT和EXEC声明执行之前,要执行得语句和命令。外部程序的输出将保存在$pn变量中,n从1开始计数。当有多行PREEXEC时,第一个PREEXEC存储结果到$p1,第二个PREEXEC将结果存在$p2。要开启这个功能,需要在snmpttini文件中,设置pre_exec_enable选项
例子:
[NODES sources_list]
可以限制哪些设备可以映射为事件定义
每个EVENT,可以有多个NODES行。
sources_list中可以包含任意主机名、IP地址、网络地址或者文件名的组合。如果这个字符串被省略,则所有的设备都被接受。
如果想19216810/24网段的设备可以触发这个EVENT, 你可以使用一条NODE语句:
NODES 19216810/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
[MATCH [MODE=[or | and]] | [$n:[!][( )[i] | n | n-n | > n | < n | xxxx | xxxx-xxxx | xxxx/x]]
匹配这个MATCH的trap,才可以引发相应的EVENT定义。
如果一条MATCH声明已经存在,没有trap匹配它,默认的,没有EVENT定义会被匹配。
如下的perl正则表达式被支持:
i – 忽略大小写
如下的命令模式可用:
注:如果为了基于IP地址/主机名来限制可以映射的EVENT的设备,推荐使用NODES关 键字。如果模式设置为’or’,只要有一条匹配,则认为结果是true;如果模式为and,只要有一 条匹配失败,则认为结果为false。在表达式中使用圆括号(),需要跟在\号之后。
如果没有MATCH MODE=这样的行存在,默认为or。每个EVENT,只能有一条match mode存在。如果多行MATCH MODE=存在,只有最后一样被使用。
例如:
[REGEX( )( )[i][g][e]]
在translated FORMAT/ EXEC行 进行搜索和替换。
多个REGEX()()行被允许。
第一个()包含了查找的表达式;第二个()包含了替换的文本。
如下的Perl正则表达式被支持:
列2:
列3:
列4:
这两个标识符之间的是描述,会被snmptt忽略。
当在配置文件中对相同的trap存在多个定义时,如下的规则被应用:
A match occurs when:
如果在snmpttini文件中设置multiple_event为1:
如果snmpttini文件中设置multiple_event 为0:
原文链接: >linux配置团体名和trap本文不讲解snmp理论知识,只讲解在linux下环境的配置。(方便服务器SNMP测试)
以rhel8为例:
1NetSnmp 工具安装
Linux 安装 netsnmp 采用在线安装的方式(确保测试环境连接 internet):
命令行执行 yum install -y net-snmp。安装完成后验证是否有如下命令:
主要是 snmpd snmpget snmpset snmpwalk snmptrapd snmptrap snmptranslate

(一般安装linux os时,把GUI package里的文件全部勾选,安装完后这些工具都会存在,不需要再额外联网安装)
2MIB 文件导入
Copy mib 库 文 件 到 默 认 的 mib 库路径,默认的 mib 库路径如下:/usr/share/snmp/mibs。
设置临时环境变量:export MIBS=all
(注意一定要把mib文件复制粘贴到mib库路径下。对于新手来说就不要进行其他设置,以避免mib库路径发生变更)
---------------------------------------------------------
SNMP V1/V2 Get 测试
通过 Snmp 接口获取 Chassis 信息:
rwcommstr :读写团体名 (在server端上设置查看)
BMC_IP :BMC 的管理 IP
deviceChassisInfo:参考自己server的OID手册(或者SNMP手册,实在不知道txt打开MIB)
命令:snmpwalk -t 20 -v 2c -c rwcommstr BMC_IP deviceChassisInfo
------------------------------------
SNMP Set 测试
通过 Snmp 接口设置/管理 BMC,需要认证使用。
BMC_IP :BMC 的管理 IP
user :snmp 用户名 (在server端上设置查看)
password :snmp密码 (在server端上设置查看)
MD5/DES :snmp用户的认证方式(在server端上设置查看)
通过 Snmp 接口开关机
snmpset -v 3 -u user -l authPriv -a MD5 -A password -x DES -X password BMC_IP LENOVO-MIB::PowerStatus0 i On
snmpset -v 3 -u user -l authPriv -a MD5 -A password -x DES -X password BMC_IP LENOVO-MIB::PowerStatus0 i Off
---------------------------------
Trap Receiver
(这里是这是SNMP trap接收端)
SNMP V1/V2 Trap Receiver
配置 netsnmp snmptrapd:
修改配置文件 /etc/snmp/snmptrapdconf (这个路径是默认的,如果有修改请找到自己修改的那个路径)
主要修改最后的字段,snmptrappfa 保持和下面 BMC 设置 Snmp Trap 的一致

(snmptrappfa是团体名,可以不用和文章内一模一样)
修改完成后,启动 snmptrapd 即可启动方式如下:
注意:启动界面需要在配置临时环境保持同一个窗口。
snmptrapd -C -c /etc/snmp/snmptrapdconf -f -Lo
------------------------------------
SNMP v3设置
接收Trap端:
1 在 /var/lib/net-snmp/snmptrapdconf中,用以下命令创建用户
createUser -e 0x8000000001020304 mytrapuser1 SHA "user1authpass" AES "user1encypass
2 在 /etc/snmp/snmptrapdconf 中,用以下命令授权已经创建好的用户
authUser log,execute,net mytrapuser1
3 在 /etc/snmp/snmptrapdconf中,去掉行 authCommunity log,execute,net snmptrappfa
4 snmptrapd -f -Dusm -Lo 开始接收trap
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)