- play_arrow 개요
- play_arrow Junos 자동화 스크립트 개요
- play_arrow Junos XML 관리 프로토콜 및 Junos XML API 개요
-
- play_arrow XSLT를 사용한 자동화 스크립팅
- play_arrow XSLT 개요
- play_arrow 자동화 스크립트에 사용되는 표준 XPath 및 XSLT 함수
- play_arrow 자동화 스크립트에 사용되는 표준 XSLT 요소 및 특성
-
- play_arrow SLAX를 사용한 자동화 스크립팅
- play_arrow SLAX 개요
- play_arrow SLAX 문
- append
- apply-imports
- apply-templates
- attribute
- attribute-set
- call
- copy-node
- copy-of
- decimal-format
- element
- else
- else if
- expr
- fallback
- for
- for-each
- function
- if
- import
- key
- match
- message
- mode
- mvar
- number
- output-method
- param
- preserve-space
- priority
- processing-instruction
- result
- set
- sort
- strip-space
- template
- terminate
- trace
- uexpr
- use-attribute-sets
- var
- version
- while
- with
- play_arrow 자동화 스크립팅을 위한 libslax 배포판
-
- play_arrow Python을 사용한 자동화 스크립팅
- play_arrow Python 개요
- Junos 디바이스용 Python 자동화 스크립트 이해
- Junos 디바이스에서 Python 자동화 스크립트를 실행하기 위한 요구 사항
- Junos 디바이스의 Python 모듈 개요
- Junos OS를 실행하는 디바이스에서 Python 대화형 모드를 사용하는 방법
- psutil 모듈을 사용하여 Junos OS를 실행하는 디바이스에서 프로세스 및 시스템 정보를 검색하는 방법
- Junos OS를 실행하는 디바이스에서 Python용 요청 라이브러리를 사용하는 방법
- Python 자동화 스크립트의 IPv6 지원
- Junos OS Evolved를 실행하는 디바이스의 Python 3 애플리케이션에서 라우팅 인스턴스를 지정하는 방법
-
- play_arrow 자동화 스크립트 입력
- play_arrow 자동화 스크립트의 전역 매개 변수
-
- play_arrow 자동화 스크립트 관리
- play_arrow 스크립트 저장 및 사용
- play_arrow 스크립트에 대한 원격 소스 구성
- play_arrow 스크립트에 대한 세션 프로토콜 구성
- play_arrow 스크립트 실행 제어
- play_arrow 라우팅 엔진 간 스크립트 동기화
- play_arrow SLAX와 XSLT 간 스크립트 변환
-
- play_arrow 커밋 스크립트
- play_arrow 커밋 스크립트 개요
- play_arrow 커밋 스크립트 생성 및 실행
- play_arrow 커밋 스크립트를 사용하여 사용자 지정 경고, 오류 또는 시스템 로그 메시지 생성
- play_arrow 커밋 스크립트를 사용하여 영구적 또는 일시적 구성 변경 생성
- play_arrow 커밋 스크립트 매크로를 사용한 사용자 지정 구성 구문 생성
- play_arrow 커밋 스크립트 예제
- 예: 방화벽에 Final then accept Term 추가
- 예: RIP 그룹에 T1 인터페이스 추가
- 예: 커밋 스크립트를 사용하여 분류자 할당
- 예: 논리 인터페이스 및 IP 주소 자동 구성
- 예: LSP의 관리 그룹 구성
- 예: 기본 캡슐화 유형 구성
- 예: 이중 라우팅 엔진 구성
- 예: 인터페이스에서 내부 게이트웨이 프로토콜 구성
- 예: IS-IS 및 MPLS 인터페이스 제어
- 예: LDP 구성 제어
- 예: 간단한 인터페이스 구성을 기반으로 복잡한 구성 생성
- 예: 최소 최대 전송 단위(MTU) 설정 부과
- 예: ATM 가상 회로 수 제한
- 예: E1 인터페이스 수 제한
- 예: 기본 구성 로드
- 예: 글로벌 정책 앞에 추가
- 예: 전체 라우팅 테이블 가져오기 방지
- 예: T1 인터페이스에서 내부 클럭 필요
- 예: 구성 문 필요 및 제한
- play_arrow 커밋 스크립트에 사용되는 Junos XML 및 XSLT 태그 요소
- play_arrow 커밋 스크립트 문제 해결
-
- play_arrow Op 스크립트
- play_arrow Op 스크립트 개요
- play_arrow Op 스크립트 생성 및 실행
- Op 스크립트에 필요한 상용구
- 운영 모드 명령 및 출력 필드를 Junos XML 표기법에 매핑
- Op 스크립트에서 RPC 및 운영 모드 명령을 사용하는 방법
- op 스크립트에서 명령줄 인수 선언 및 사용Declare and use command-line arguments in op scripts
- Op 스크립트에 대한 도움말 텍스트 구성
- Op 스크립트에서 허용할 운영 모드 명령 정의
- Op 스크립트 활성화 및 스크립트 별칭 정의
- Op 스크립트에 대한 체크섬 해시 구성
- 로컬 디바이스에서 Op 스크립트 실행
- 원격 사이트에서 Op 스크립트 실행
- Op 스크립트 사용 안 함
- play_arrow Op 스크립트 예제
- SLAX 및 XSLT 스크립트를 사용하여 구성 변경
- 예: SLAX 및 XSLT Op 스크립트를 사용하여 구성 변경
- 예제: Python Op 스크립트를 사용하여 구성 변경
- 예: op 스크립트를 사용하여 show interfaces terse 명령의 출력 사용자 정의
- 예: op 스크립트를 사용하여 DNS 호스트 이름 정보 표시
- 예: Op 스크립트를 사용하여 여러 대상에 대한 LSP 찾기
- 예: Op 스크립트를 사용하여 FPC 다시 시작
- 예제: Op 스크립트를 사용하여 파일 내보내기
- 예제: Op 스크립트를 사용하여 파일 가져오기
- 예제: Op 스크립트를 사용하여 파일 검색
- play_arrow 서비스 템플릿 자동화를 사용하여 서비스 프로비저닝
- play_arrow Op 스크립트 문제 해결
-
- play_arrow 이벤트 정책 및 이벤트 스크립트
- play_arrow 이벤트 정책 개요
- play_arrow 이벤트 정책 트리거
- play_arrow 이벤트 정책 작업
- 운영 모드 명령을 실행하도록 이벤트 정책 구성하기
- 이벤트 정책을 구성하여 구성 변경
- 예: 이벤트 정책을 사용하여 구성 변경
- 예: 이벤트에 대한 응답으로 인터페이스 구성 변경
- 이벤트 정책에서 이벤트 스크립트 실행
- 이벤트 스크립트를 사용하여 구성 변경
- 인수를 이벤트 스크립트에 전달하도록 이벤트 정책 구성하기
- 이벤트를 무시하도록 이벤트 정책 구성
- 예: 다른 이벤트 수신을 기반으로 이벤트 무시
- SNMP 트랩 발생을 위한 이벤트 정책 사용 개요
- 예: 이벤트에 대한 응답으로 SNMP 트랩 발생
- 이벤트 정책에서 이벤트 시스템 로그 우선 순위 이해하기
- 예: 이벤트 정책에서 이벤트 시스템 로그 우선 순위 구성
- 예: 특정 이벤트 유형에 따라 이벤트 스크립트 출력 제한
- play_arrow 이벤트 정책 파일 아카이브 구성
- play_arrow 이벤트 정책 권한 구성
- play_arrow 이벤트 스크립트 개요
- play_arrow 이벤트 스크립트 생성 및 실행
- play_arrow 이벤트 정책 및 이벤트 스크립트 문제 해결
-
- play_arrow SNMP 스크립트
- play_arrow SNMP 스크립트 개요
- play_arrow SNMP 스크립트 생성 및 실행
- play_arrow SNMP 스크립트 예
- play_arrow SNMP 스크립트 문제 해결
-
- play_arrow 구성 명령문 및 작동 명령
emit-change Template (SLAX and XSLT) and emit_change (Python)
구문
Python 구문
jcs.emit_change(content, tag, format)
SLAX 구문
call jcs:emit-change($dot=expression, $name = name($dot), $tag = "(change | transient-change)" { with $content = { ... } with $message = { expr "message"; } }
XSLT 구문
<xsl:call-template name="jcs:emit-change"> <xsl:with-param name="content"> ... </xsl:with-param> <xsl:with-param name="dot" select="expression"/> <xsl:with-param name="message"> <xsl:text>message</xsl:text> </xsl:with-param> <xsl:with-param name="name" select="name($dot)"/> <xsl:with-param name="tag" select="'(change | transient-change)'"/> </xsl:call-template>
매개 변수
content | 지속적 또는 일시적 변화의 내용. SLAX 및 XSLT 스크립트에서는 이(가) 상대적 |
dot | 변경이 이루어질 계층 수준을 지정하는 XPath 표현식입니다. 기본 위치는 스크립트가 현재 평가하고 있는 XML 계층의 위치입니다. SLAX 스크립트의 매개 변수 또는 |
format | Python 커밋 스크립트를 통해 로드된 구성 데이터의 형식. 유일한 지원 형식은 입니다 |
message | 구성이 변경되었음을 사용자에게 알리는 CLI에 표시된 경고 메시지. 메시지 매개 변수는 XML 계층의 현재 위치에 기본값인 편집 경로를 자동으로 포함합니다. 기본 편집 경로를 변경하려면 SLAX 스크립트의 |
name | 에서는 현재 요소 또는 속성을 참조할 수 있습니다. |
tag | 생성할 변경 유형. 을 지정 |
사용 예
다음 예는 XSLT 커밋 스크립트에서 템플릿을 호출 jcs:emit-change
하는 방법을 보여줍니다.
<xsl:template match="configuration"> <xsl:for-each select="interfaces/interface/unit[family/iso]"> <xsl:if test="not(family/mpls)"> <xsl:call-template name="jcs:emit-change"> <xsl:with-param name="message"> <xsl:text>Adding 'family mpls' to ISO-enabled interface</xsl:text> </xsl:with-param> <xsl:with-param name="content"> <family> <mpls/> </family> </xsl:with-param> </xsl:call-template> </xsl:if> </xsl:for-each> </xsl:template>
IS-IS가 활성화되어 있지만 계층 수준에 명령문이 포함되지 않은 family mpls
하나 이상의 인터페이스를 포함하는 [edit interfaces interface-name unit logical-unit-number]
구성을 커밋할 때 템플릿 jcs:emit-change
은 구성에 문을 추가하고 family mpls
다음 CLI 출력을 생성합니다.
[edit] user@host# commit [edit interfaces interface so-1/2/3 unit 0] warning: Adding 'family mpls' to ISO-enabled interface [edit interfaces interface so-1/2/3 unit 0] warning: Adding ISO-enabled interface so-1/2/3.0 to [protocols mpls] [edit interfaces interface so-1/3/2 unit 0] warning: Adding 'family mpls' to ISO-enabled interface [edit interfaces interface so-1/3/2 unit 0] warning: Adding ISO-enabled interface so-1/3/2.0 to [protocols mpls] commit complete
템플릿의 jcs:emit-change
매개 변수는 content
구성에 대한 변경을 지정하는 더 간단한 방법을 제공합니다. 예를 들어, 다음 코드를 고려하십시오.
<xsl:with-param name="content"> <family> <mpls/> </family> </xsl:with-param>
SLAX 및 XSLT 스크립트에서 템플릿은 jcs:emit-change
매개 변수를 content
요청으로 <change>
변환합니다. 요청은 <change>
제공된 부분 구성 컨텐츠를 현재 컨텍스트 노드의 전체 계층에 삽입합니다. 따라서 템플릿은 jcs:emit-change
매개 변수의 계층 정보를 content
다음 코드로 변경합니다.
<change> <interfaces> <interface> <name><xsl:value-of select="name"/></name> <unit> <name><xsl:value-of select="unit/name"/></name> <family> <mpls/> </family> </unit> </interface> </interfaces> </change>
임시 변경이 필요한 tag
경우, 여기에 표시된 대로 매개 변수가 'transient-change
'으로 전달될 수 있습니다.
<xsl:with-param name="tag" select="'transient-change'"/>
XSLT가 문자열 ""과 "transient-change
"라는transient-change
노드의 내용을 구별할 수 있도록 추가 따옴표가 필요합니다. 변경이 컨텍스트 노드가 아닌 노드와 상대적인 경우, 다음 예제에 표시된 대로 매개 변수 dot
를 해당 노드로 설정할 수 있습니다. 여기서 컨텍스트는 계층 수준으로 설정 [edit chassis]
됩니다.
<xsl:for-each select="interfaces/interface/unit"> ... <xsl:call-template name="jcs:emit-change"> <xsl:with-param name="dot" select="chassis"/> ...
다음 Python 커밋 스크립트는 구성에 대한 지속적인 변경을 생성합니다.
import jcs if __name__ == '__main__': script = "system-check.py" change_xml = """<system><scripts><op> <file><name>{0}</name></file></op> </scripts></system>""".format(script) jcs.emit_change(change_xml, "change", "xml")