使用正则表达式细化触发策略的事件集
您可以使用正则表达式匹配更精确地定义哪些事件会触发事件策略。
您可以使用正则表达式匹配来更精确地控制哪些事件会触发事件策略。定义事件策略时,请指定触发策略的事件。许多事件都有一个或多个属性,这些属性提供有关每个特定事件的详细信息,例如接口名称、端口号或错误代码。您可以定义一个事件策略,该策略引用事件的属性,并且仅当属性值与某个指定的正则表达式匹配时才触发。
要将事件属性与正则表达式进行匹配,请在层次结构级别包含[edit event-options policy policy-name attributes-match]该matches语句。指定要评估的事件和属性。引用的事件必须是触发器事件或事件策略语within句中包含的相关事件。然后定义属性值必须匹配才能触发策略的正则表达式。
[edit event-options policy policy-name] user@host# set events event user@host# set attributes-match event.attribute-name matches regular-expression
指定正则表达式时,请对扩展(现代)UNIX 正则表达式使用 POSIX Standard 1003.2 中定义的表示法。 表 1 概述了可在语句中使用的 matches 一些正则表达式运算符。在描述中, 术语 是指单个字母数字字符或用方括号、括号或大括号括起来的一组字符。
该 matches 语句不区分大小写。
操作人员 |
比赛 |
|---|---|
.(期间) |
任何角色的一个实例。 |
*(星号) |
前一个术语的零个或多个实例。 |
+(加号) |
紧接前一个术语的一个或多个实例。 |
?(问号) |
前一个术语的零个或一个实例。 |
|(管道) |
出现在管道运算符两侧的术语之一。 |
!(感叹号) |
除表达式指定的字符串外的任何字符串,当感叹号出现在表达式的开头时。感叹号的使用特定于 Junos OS。 |
^ (插入符号) |
行的开头,当插入符号出现在方括号外时。 当插入符号是方括号内的第一个字符时,不跟随方括号内的任何字符的一个实例。 |
$(美元符号) |
一条线的末尾。 |
|
其中一个括起来的字母数字字符的一个实例。要指示字符范围,请使用连字符 ( |
|
所包含项的评估值的一个实例。括号用于指示正则表达式中的求值顺序。 |
要在测试环境中测试正则表达式,可以使用 Junos 记录器实用程序使用适当的属性和消息模拟事件通知。有关更多信息,请参阅 Junos Logger 实用程序。
解释正则表达式语法超出了本文档的范围。有关一些其他信息,请参阅 正则表达式。
示例:使用正则表达式控制事件策略
在以下示例中,如果事件发生在事件发生后 SNMP_TRAP_LINK_UP 120 秒内,则SNMP_TRAP_LINK_DOWN会触发事件策略。但是,只有当interface-name两个陷阱中的属性彼此匹配且interface-name陷阱中的SNMP_TRAP_LINK_DOWN属性以字母g开头时,才会触发事件策略。因此,事件策略仅对 ge-* 接口事件触发。当进程收到来自其他接口的陷阱时eventd,不会触发策略。
在系统日志文件中,消息标记全部以大写字母显示。在 CLI 中,消息标记以所有小写字母显示。
[edit event-options]
policy pol6 {
events snmp_trap_link_down;
within 120 events snmp_trap_link_up;
attributes-match {
snmp_trap_link_up.interface-name equals snmp_trap_link_down.interface-name;
snmp_trap_link_down.interface-name matches "^g";
}
then {
execute-commands {
commands {
"show interfaces {$$.interface-name}";
"show configuration interfaces {$$.interface-name}";
}
output-filename if-info;
destination event-archive;
output-format text;
}
}
}
以下示例稍微修改了前面的事件策略。只有当两个陷阱中的属性彼此匹配时 interface-name ,策略仍然会触发。但是,在这种情况下, interface-name 中的 SNMP_TRAP_LINK_DOWN 属性不得以 ge-0/0 开头。因此,事件策略将针对接口名称 ge-0/1/0 和 xe-0/2/0 触发,但不会针对 ge-0/0/0、ge-0/0/1 等触发。
policy interface-down {
events snmp_trap_link_down;
within 120 events snmp_trap_link_up;
attributes-match {
snmp_trap_link_up.interface-name equals snmp_trap_link_down.interface-name;
snmp_trap_link_down.interface-name matches "!(^ge-0/0.*)";
}
then {
execute-commands {
commands {
"show interfaces {$$.interface-name}";
"show configuration interfaces {$$.interface-name}";
}
output-filename if-info;
destination event-archive;
output-format text;
}
}
}