Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

사용자 지정 YANG 모듈에 대한 CLI에 유효한 명령 옵션 및 구성 문 값 표시

특정 Junos 디바이스를 사용하면 디바이스에서 사용자 지정 YANG 모듈을 로드하여 Junos OS 의해 기본적으로 지원되지 않는 데이터 모델을 추가할 수 있습니다. 디바이스에 사용자 지정 YANG 데이터 모델을 추가할 때 YANG 데이터 모델과 Junos OS 간의 변환 논리를 처리하는 작업 또는 변환 스크립트도 제공해야 합니다. 스크립트 로직은 사용자가 주어진 명령 옵션 또는 구성 문에 대해 유효한 값을 제공하도록 보장할 수 있지만 해당 로직이 항상 사용자에게 투명하지는 않습니다. 릴리스 19.2R1 Junos OS 시작 시 CLI는 옵션 또는 문 정의에 확장 문을 포함하고 action-expand 논리를 처리하는 스크립트를 참조할 때 사용자 지정 YANG 데이터 모델에 특정 명령 옵션 또는 구성 문에 대한 가능한 값 집합을 표시합니다.

사용자 지정 YANG 모듈에 대한 컨텍스트에 민감한 도움말 이해하기

Junos CLI는 운영 또는 구성 모드에서 물음표(?)를 입력할 때마다 컨텍스트에 민감한 도움을 제공합니다. 명령을 실행하거나 문을 구성할 때 CLI의 컨텍스트에 민감한 도움말은 구성 문 계층에서 명령 또는 유효한 구성 문 및 리프 문 값에 대한 유효한 옵션 및 옵션 값을 표시합니다. 또한 컨텍스트에 민감한 도움말은 불완전한 옵션 이름, 문 이름 및 해당 값의 가능한 완료를 보여줍니다.

또한 CLI는 사용자 지정 YANG 데이터 모델에서 특정 명령 옵션 또는 구성 문에 유효한 값을 표시할 수 있습니다. CLI는 사용자의 부분 입력과 일치하는 가능한 모든 값 또는 값의 하위 집합을 표시할 수 있습니다. 예를 들어:

사용자 지정 YANG 모듈에서 주어진 명령 옵션 또는 구성 문에 대한 유효한 값 집합을 표시하려면 다음을 수행합니다.

  1. YANG 모듈 정의에 action-expand 설명된 대로 YANG 모듈의 적절한 입력 매개변수 또는 구성 문에 따라 및 script 확장 문을 정의합니다.

  2. 사용자 입력을 확인하고, 명령 옵션 또는 구성 명령문의 가능한 값을 계산하고, CLI 확장 스크립트 생성에 설명된 대로 적절한 출력을 CLI로 전송하는 Python 스크립트를 생성합니다.

    참고:

    CLI 확장 스크립트는 CLI에 유효한 값만 표시합니다. 모듈의 변환 스크립트 또는 작업 스크립트에는 유효한 값만 수락 및 처리되도록 하는 로직이 여전히 포함되어야 합니다.

  3. YANG 패키지 로드에 설명된 대로 YANG 모듈, 모든 변환 또는 작업 스크립트 및 디바이스에서 사용자 지정 YANG 패키지의 일부로 CLI 확장 스크립트 를 로드합니다.

    참고:

    Junos 디바이스가 CLI 확장 스크립트를 다른 종류의 작업 스크립트로 처리하지만, 혼동을 피하기 위해 CLI 확장 스크립트를 참조합니다.

YANG 모듈 정의

사용자가 CLI에서 컨텍스트에 민감한 도움을 요청할 때 주어진 명령 옵션 또는 구성 문에 대한 유효한 값 집합을 표시하는 사용자 지정 YANG 모듈을 정의하려면 모듈은 다음을 수행해야 합니다.

  1. Junos OS DDL 확장 모듈을 가져옵니다.
  2. action-expand 해당 명령 옵션 또는 구성 문 정의에 확장 문 및 script 하위 설정을 포함합니다.
    • 사용자 지정 RPC를 정의하는 모듈과 사용자 정의 구성 계층을 leaf 정의하는 모듈의 또는 leaf-list 문 내에서 문 안에 leaf 명령문을 포함 action-expand 할 수 있습니다.

    • 지정된 노드에 대해서만 단일 action-expand 문을 정의할 수 있습니다.

    • 문은 script 사용자 정의 논리를 정의하는 Python 스크립트를 참조해야 합니다.

예를 들어, 다음 모듈에서 RPC는 사용자가 CLI에서 인수에 hostip 대한 hostip 컨텍스트에 민감한 도움을 요청할 때 Python 스크립트를 호출 hostip-expand.py 하는 입력 매개변수를 정의합니다. 스크립트는 CLI에서 해당 인수에 대한 유효한 값을 표시하는 사용자 지정 논리를 구현합니다.

CLI 확장 스크립트 만들기

사용자 지정 YANG 모듈에서 명령 옵션 또는 구성 문에 대한 문 및 script 하위 설정을 정의 action-expand 하고 CLI에서 해당 옵션 또는 문 값에 대한 컨텍스트에 민감한 도움을 요청하면 디바이스는 참조된 Python 스크립트를 호출합니다. 스크립트에는 해당 매개 변수에 대해 가능한 모든 값을 계산하고 표시하는 사용자 지정 로직이 포함되어야 하며, 사용자의 부분 입력과 일치하는 값 하위 집합을 표시해야 합니다.

예를 들어, 다음 명령은 인수에 대한 hostip 모든 유효한 값을 표시해야 합니다.

그리고 다음 명령은 "198"으로 시작하는 모든 유효한 값을 표시해야 합니다.

CLI에서 명령 옵션 또는 구성 문에 대한 유효한 값을 표시하려면 Python 스크립트는 다음 기능을 수행해야 합니다.

  1. jcs 다른 필요한 Python 라이브러리와 함께 라이브러리를 가져옵니다.

  2. 모든 사용자 입력을 검색하고 처리합니다.

    CLI에서 옵션 또는 문 값에 대한 부분 입력을 지정하는 경우 스크립트의 명령줄 인수에는 사용자 입력을 포함하는 문자열인 인수가 포함됩니다 symbol .

    참고:

    릴리스 21.2R1 Junos OS 및 Evolved 릴리스 21.2R1 Junos OS 스크립트의 명령줄 인수에는 인자 대신 인수가 symbol 포함됩니다--symbol.

  3. 매개 변수에 대한 유효한 값을 정의하거나 계산합니다.

  4. 명령줄에 jcs.expand() 표시할 각 값의 함수를 호출합니다.

스크립트는 CLI에 jcs:expand() 표시하려면 각 옵션 또는 문 값에 대한 함수를 호출해야 합니다. 이 함수의 구문 jcs:expand() 은 다음과 입니다.

어디:

value

주어진 명령 옵션 또는 구성 문에 대해 유효한 값을 정의하는 문자열입니다.

description

값을 설명하는 문자열입니다.

units

(선택 사항) 해당 값에 대한 단위를 정의하는 문자열입니다.

range

(선택 사항) 해당 값의 범위를 정의하는 문자열입니다.

함수에 jcs.expand() 대한 각 호출에 대해 스크립트는 CLI의 기능 인수에서 제공되는 값, 설명, 단위 및 범위를 내보낸다. 예를 들어 스크립트에서 다음 통화를 할 jcs.expand() 수 있습니다.

해당 CLI 출력은 다음과 입니다.

다음 샘플 스크립트는 먼저 스크립트의 symbol 명령줄 인수에 있는지 확인하고 있는 경우 해당 변수를 사용자의 입력과 동일하게 설정합니다. 그런 다음 스크립트는 사용자의 입력을 기반으로 매개 변수에 대한 유효한 값 집합을 계산합니다. 마지막으로, 스크립트는 CLI에 jcs.expand() 표시할 각 값의 함수를 호출합니다.

우리는 스크립트의 두 가지 버전을 제공하며, 이는 서로 다른 릴리스에 대한 스크립트의 symbol 인수를 적절하게 처리합니다. 릴리스 21.2R1 이상에서 Junos OS 실행되는 디바이스에서 유효한 다음 샘플 스크립트는 라이브러리를 사용하여 argparse 인수를 구문 분석합니다 --symbol .

마찬가지로, 릴리스 21.1 또는 이전 Junos OS 실행되는 디바이스에서 sys.argv 유효한 다음 샘플 스크립트가 목록에서 확인 symbol 합니다.

CLI 확장 스크립트는 CLI에서 명령 옵션 또는 구성 문에 대한 유효한 값, 단위 및 범위만 표시합니다. 모듈의 번역 스크립트 또는 작업 스크립트는 유효한 값만 수락 및 처리되도록 해야 합니다.

YANG 패키지 로드

Junos 디바이스에서 YANG 패키지를 로드할 때, 해당 패키지에 대한 작업 스크립트 목록에 모든 CLI 확장 스크립트를 포함합니다. Junos OS 스크립트를 /var/db/scripts/action directory에 자동으로 복사합니다.

새 패키지를 로드하고 사용자 지정 CLI 확장 스크립트를 포함하려면 다음을 수행합니다.

  1. Python 스크립트가 다음 요구 사항을 충족하는지 확인합니다.
  2. 구성 모드에서 디바이스가 Junos OS 릴리스에 적합한 또는 language python3 문을 구성 language python 하여 서명되지 않은 Python 스크립트를 실행할 수 있도록 합니다.
    참고:

    Junos OS 릴리스 20.2R1부터 Evolved 릴리스 22.3R1 Junos OS, 디바이스는 Python 3을 사용하여 YANG 작업 및 변환 스크립트를 실행합니다. 이전 릴리스에서 Junos OS Python 2.7만 사용하여 이러한 스크립트를 실행하고, Junos OS Evolved는 기본적으로 Python 2.7을 사용하여 스크립트를 실행합니다.

  3. 운영 모드에서 YANG 패키지를 로드하고 목록에 CLI 확장 스크립트를 action-script 포함합니다.
    참고:

    CLI 관련 또는 구성 데이터베이스 오류를 방지하기 위해 디바이스가 YANG 패키지를 추가, 업데이트 또는 삭제하고 스키마를 수정하는 동안 CLI 작업을 수행하거나 구성을 변경하거나 작업을 종료하지 않는 것이 좋습니다.

  4. 시스템에서 Junos OS CLI를 다시 시작하라는 메시지가 표시되면 을(를) 눌러 Enteryes기본 값을 수락합니다.

예: 명령 옵션에 대한 컨텍스트에 민감한 도움말 표시

이 예에서는 사용자가 해당 옵션에 대해 CLI에서 action-expand 컨텍스트에 민감한 도움을 요청할 때 확장 문과 사용자 지정 스크립트를 사용하여 명령 옵션 중 하나에 대한 가능한 값 집합을 표시하는 사용자 지정 YANG 모듈을 제시합니다.

요구 사항

이 예는 다음과 같은 하드웨어 및 소프트웨어 구성 요소를 사용합니다.

  • 사용자 지정 YANG 데이터 모델 로드를 지원하는 릴리스 19.2R1 이상에서 Junos OS 실행되는 디바이스입니다.

개요

이 예의 YANG 모듈은 지정된 호스트를 ping하고 결과를 반환하는 사용자 지정 RPC를 정의합니다. YANG 모듈 rpc-host-statusrpc-host-status.yang 파일에 저장됩니다. 모듈은 Junos OS 확장 모듈을 가져옵니다. 이 모듈은 디바이스에서 사용자 지정 RPC를 실행하고 CLI에서 출력과 컨텍스트에 민감한 도움을 사용자 정의하는 데 필요한 확장을 제공합니다.

모듈은 RPC를 get-host-status 정의합니다. 문은 junos:command CLI에서 RPC를 실행하는 데 사용되는 명령을 정의합니다. 이 경우 입니다show host-status. 및 junos:script 문은 junos:action-execute RPC를 실행할 때 호출되는 작업 스크립트를 정의합니다.

입력 매개변수에는 hostipjunos:script 명령문이 포함되어 junos:action-expand 있으며, 이는 사용자가 해당 입력 매개변수에 대해 CLI에서 컨텍스트에 민감한 도움을 요청할 때 호출되는 스크립트를 정의합니다.

hostip-expand.py 스크립트는 사용자의 입력을 처리하며, 이 입력은 릴리스에 따라 인자로 symbol 또는 --symbol인자로 스크립트로 전달됩니다. 그런 다음 스크립트는 사용자가 해당 명령 옵션에 대해 입력할 수 있는 값 집합을 계산하고 표시합니다.

참고:

Junos OS 릴리스 21.2R1 및 Junos OS Evolved 릴리스 21.2R1부터 디바이스가 CLI 확장 스크립트를 포함한 Python 작업 스크립트에 명령줄 인수를 전달하면 단일 하이픈(-)을 단일 문자 인자 인자 이름에 접두사하고 2개의 하이픈(--)을 다중 문자 인수 이름에 접두사합니다.

확장 스크립트는 CLI에 대한 hostip 유효한 값을 표시합니다. 작업 스크립트는 제공된 값이 유효한지 여부를 결정하는 로직을 구현합니다. 이 예에서는 라는 새로운 YANG 패키지 rpc-host-status의 일부로 YANG 모듈과 작업 스크립트를 디바이스에 추가합니다.

YANG 모듈 및 작업 스크립트

YANG 모듈

YANG 모듈 rpc-host-status.yang은 RPC, CLI에서 RPC를 실행하는 데 사용되는 명령, RPC를 실행할 때 호출할 작업 스크립트 이름 및 사용자가 해당 입력 매개 변수에 대해 컨텍스트에 민감한 도움을 요청할 때 호출할 CLI 확장 스크립트의 이름을 정의합니다.

작업 스크립트

해당 작업 스크립트가 rpc-host-status.py. 이 예는 작업 스크립트의 두 가지 버전을 제공하며, 이는 다양한 릴리스에 대한 스크립트의 명령줄 인수를 적절하게 처리합니다.

작업 스크립트(Junos OS 릴리스 21.2R1 이상)
작업 스크립트(Junos OS 릴리스 21.1 이전 버전)

CLI 확장 스크립트

CLI에서 유효한 값을 표시하기 위해 hostip 논리를 처리하는 작업 스크립트가 hostip-expand.py. 이 예는 스크립트의 두 가지 버전을 제공하며, 이는 서로 다른 릴리스에 대한 스크립트의 인수를 적절하게 처리합니다.

CLI 확장 스크립트(Junos OS 릴리스 21.2R1 이상)
CLI 확장 스크립트(Junos OS 릴리스 21.1 이전 버전)

구성

Python 스크립트 실행 활성화

디바이스가 부호 없는 Python 스크립트를 실행할 수 있도록 하는 방법:

  1. Junos OS 릴리스에 language python 적합한 또는 language python3 문을 구성합니다.

    참고:

    Junos OS 릴리스 20.2R1부터 Evolved 릴리스 22.3R1 Junos OS, 디바이스는 Python 3을 사용하여 YANG 작업 및 변환 스크립트를 실행합니다. 이전 릴리스에서 Junos OS Python 2.7만 사용하여 이러한 스크립트를 실행하고, Junos OS Evolved는 기본적으로 Python 2.7을 사용하여 스크립트를 실행합니다.

  2. 구성을 커밋합니다.

디바이스에 YANG 모듈 및 스크립트 로드

YANG 모듈과 스크립트를 Junos 디바이스에 추가하려면,

  1. YANG 모듈 및 스크립트를 Junos 디바이스로 다운로드합니다.

  2. Python 스크립트가 다음 요구 사항을 충족하는지 확인합니다.

  3. (선택 사항) YANG 모듈 및 작업 스크립트에 대한 구문을 검증합니다.

  4. YANG 모듈과 스크립트를 새 YANG 패키지에 추가합니다.

  5. 시스템에서 Junos OS CLI를 다시 시작하라는 메시지가 표시되면 을(를) 눌러 Enter , 의 기본 값을 yes수락하거나 을(를) 입력 yes 하고 누릅니다 Enter.

컨텍스트에 민감한 도움말 확인

목적

CLI 확장 스크립트가 예상대로 작동하는지 확인합니다.

작업

운영 모드에서 RPC 정의에서 문으로 정의된 junos:command 명령을 실행하여 CLI에서 컨텍스트에 민감한 도움을 요청하고 입력 인수와 물음표(?)를 포함합니다 hostip .

부분 사용자 입력으로 동일한 작업을 수행하고 표시된 값이 입력과 올바르게 일치하는지 확인합니다.

의미

컨텍스트에 민감한 도움말이 값에 hostip 대해 요청되면 디바이스는 스크립트를 hostip-expand.py 호출합니다. 스크립트는 제공된 경우 사용자의 입력을 처리하고 CLI에서 유효한 완료물을 인쇄합니다. 사용자 입력이 제공되지 않으면 스크립트가 가능한 모든 값을 인쇄합니다. 사용자 입력이 제공되면 스크립트는 일치하는 값만 인쇄합니다.

릴리스 기록 테이블
릴리스
설명
21.2R1 및 21.2R1-EVO
Junos OS 릴리스 21.2R1 및 Junos OS Evolved 릴리스 21.2R1부터 디바이스가 Python 작업 스크립트에 명령줄 인수를 전달하면 단일 하이픈(-)을 단일 문자 인수 이름에 접두사하고 2개의 하이픈(--)을 다중 문자 인수 이름에 접두사합니다.