정규식을 사용하여 정책을 트리거하는 이벤트 집합 구체화
정규 표현식 일치를 사용하여 이벤트 정책을 트리거하는 이벤트를 보다 정확하게 정의할 수 있습니다.
정규 표현식 일치를 사용하여 이벤트 정책을 트리거하는 이벤트를 보다 정확하게 제어할 수 있습니다. 이벤트 정책을 정의할 때 정책을 트리거하는 이벤트를 지정합니다. 많은 이벤트에는 각 특정 이벤트에 대한 세부 정보(예: 인터페이스 이름, 포트 번호 또는 오류 코드)를 제공하는 하나 이상의 속성이 있습니다. 이벤트의 속성을 참조하는 이벤트 정책을 정의하고 속성 값이 지정된 정규식과 일치하는 경우에만 트리거할 수 있습니다.
이벤트 속성을 정규식과 일치시키려면 계층 수준에서 [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 표준 1003.2에 정의된 표기법을 사용합니다. 표 1 은 명령문에서 matches 사용할 수 있는 몇 가지 정규 표현식 연산자를 간략하게 보여줍니다. 설명에서 용어 는 단일 영숫자 문자 또는 대괄호, 괄호 또는 중괄호로 묶인 문자 집합을 나타냅니다.
문은 matches 대소문자를 구분하지 않습니다.
운영자 |
경기 |
|---|---|
. (마침표) |
모든 캐릭터의 한 인스턴스. |
* (별표) |
바로 이전 용어의 0개 이상의 인스턴스. |
+(더하기 기호) |
바로 이전 용어의 하나 이상의 인스턴스. |
? (물음표) |
직전 용어의 0개 또는 1개 인스턴스. |
| (파이프) |
파이프 연산자의 양쪽에 나타나는 용어 중 하나입니다. |
! (느낌표) |
표현식의 시작 부분에 느낌표가 나타나는 경우 표현식에 의해 지정된 문자열을 제외한 모든 문자열. 느낌표 사용은 Junos OS에 따라 다릅니다. |
^ (캐럿) |
캐럿이 대괄호 밖에 나타나는 줄의 시작 부분입니다. 캐럿이 대괄호 안의 첫 번째 문자인 경우 대괄호 안에 오지 않는 문자의 한 인스턴스입니다. |
$(달러 기호) |
줄의 끝. |
|
둘러싸인 영숫자 문자 중 하나의 하나의 인스턴스입니다. 문자 범위를 나타내려면 하이픈( |
|
둘러싸인 용어의 평가된 값의 한 인스턴스. 괄호는 정규식에서 평가 순서를 나타내는 데 사용됩니다. |
테스트 환경 내에서 정규식을 테스트하기 위해 Junos 로거 유틸리티를 사용하여 적절한 속성 및 메시지로 이벤트 알림을 시뮬레이션할 수 있습니다. 자세한 정보는 Junos 로거 유틸리티를 참조하십시오.
정규식 구문에 대한 설명은 이 문서의 범위를 벗어납니다. 몇 가지 추가 정보는 정규 표현식을 참조하십시오.
예: 정규식을 사용하여 이벤트 정책 제어
다음 예제에서 이벤트 정책은 이벤트 발생 후 120초 이내에 이벤트가 발생할 경우 SNMP_TRAP_LINK_DOWN 트리거됩니다.SNMP_TRAP_LINK_UP 그러나 이벤트 정책은 두 트랩의 속성이 interface-name 서로 일치하고 트랩의 SNMP_TRAP_LINK_DOWN 속성이 interface-name 문자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 서로 일치하는 경우에만 트리거됩니다. 그러나 이 경우 의 SNMP_TRAP_LINK_DOWN 속성은 interface-name 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;
}
}
}