Usar expresiones regulares para refinar el conjunto de eventos que desencadenan una política
Puede definir con mayor precisión qué eventos desencadenan una política de eventos mediante la coincidencia de expresiones regulares.
Puede usar la coincidencia de expresiones regulares para controlar con mayor precisión qué eventos desencadenan una política de eventos. Cuando se define una política de eventos, se especifican los eventos que desencadenan la política. Muchos eventos tienen uno o más atributos que proporcionan detalles sobre cada evento específico, por ejemplo, un nombre de interfaz, un número de puerto o un código de error. Puede definir una política de eventos que haga referencia a los atributos y desencadenadores de un evento solo si el valor del atributo coincide con alguna expresión regular especificada.
Para hacer coincidir un atributo de evento con una expresión regular, incluya la matches instrucción en el nivel de [edit event-options policy policy-name attributes-match] jerarquía. Especifique el evento y el atributo que desea evaluar. El evento al que se hace referencia debe ser el evento desencadenante o un evento correlativo incluido en la instrucción de la política de within eventos. A continuación, defina la expresión regular con la que debe coincidir el valor del atributo para activar la política.
[edit event-options policy policy-name] user@host# set events event user@host# set attributes-match event.attribute-name matches regular-expression
Cuando especifique la expresión regular, utilice la notación definida en el estándar POSIX 1003.2 para expresiones regulares UNIX extendidas (modernas). En la tabla 1 se describen algunos de los operadores de expresiones regulares que se pueden usar en la matches instrucción. En las descripciones, término se refiere a un solo carácter alfanumérico o a un conjunto de caracteres entre corchetes, paréntesis o llaves.
La matches instrucción no distingue entre mayúsculas y minúsculas.
Operador |
Partidos |
|---|---|
. (punto) |
Una instancia de cualquier personaje. |
* (asterisco) |
Cero o más instancias del término inmediatamente anterior. |
+ (signo más) |
Una o más instancias del término inmediatamente anterior. |
? (signo de interrogación) |
Cero o una instancia del término inmediatamente anterior. |
| (tubería) |
Uno de los términos que aparecen a ambos lados del operador de tubería. |
! (signo de exclamación) |
Cualquier cadena excepto la especificada por la expresión, cuando el signo de exclamación aparece al principio de la expresión. El uso del signo de exclamación es específico de Junos OS. |
^ (símbolo de intercalación) |
El inicio de una línea, cuando el símbolo de intercalación aparece fuera de los corchetes. Una instancia de cualquier carácter que no lo siga entre corchetes, cuando el símbolo de intercalación es el primer carácter entre corchetes. |
$ (signo de dólar) |
El final de una línea. |
|
Una instancia de uno de los caracteres alfanuméricos adjuntos. Para indicar un rango de caracteres, use un guión ( |
|
Una instancia del valor evaluado del término adjunto. Los paréntesis se utilizan para indicar el orden de evaluación en la expresión regular. |
Para probar sus expresiones regulares en un entorno de prueba, puede usar la utilidad del registrador de Junos para simular una notificación de evento con los atributos y el mensaje adecuados. Para obtener más información, consulte Utilidad de registro de Junos.
Explicar la sintaxis de expresiones regulares está fuera del alcance de este documento. Para obtener más información, consulte Expresiones regulares.
Ejemplos: Control de políticas de eventos mediante una expresión regular
En el ejemplo siguiente, la política de eventos se activa si se produce un SNMP_TRAP_LINK_DOWN evento dentro de los 120 segundos posteriores a un SNMP_TRAP_LINK_UP evento. Sin embargo, la política de eventos solo se activa si el interface-name atributo de ambas capturas coincide entre sí y el atributo de la captura comienza con la interface-name SNMP_TRAP_LINK_DOWN letra g. Por lo tanto, la política de eventos solo se activa para eventos de interfaz ge-*. La política no se activa cuando el eventd proceso recibe capturas de otras interfaces.
En los archivos de registro del sistema, las etiquetas de mensaje aparecen en mayúsculas. En la CLI, las etiquetas de mensaje aparecen en letras minúsculas.
[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;
}
}
}
En el ejemplo siguiente se modifica ligeramente la directiva de eventos anterior. La política solo se activa si el interface-name atributo de ambas capturas coincide entre sí. Sin embargo, en este caso, el interface-name atributo en el SNMP_TRAP_LINK_DOWN atributo no debe empezar por ge-0/0. Por lo tanto, la política de eventos se desencadenaría para los nombres de interfaz ge-0/1/0 y xe-0/2/0, pero no para ge-0/0/0, ge-0/0/1, etc.
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;
}
}
}