Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

TextFSM 템플릿과 함께 Junos PyEZ 테이블 사용

요약 Junos PyEZ op 테이블은 TextFSM 템플릿을 단독으로 또는 Junos PyEZ View와 함께 참조하여 모든 네트워크 디바이스에서 CLI 또는 VTY 명령 출력을 구문 분석할 수 있습니다.

TextFSM 템플릿 이해

Junos PyEZ op 테이블은 CLI 또는 VTY 명령 출력에서 데이터를 추출할 수 있습니다. 테이블은 View를 참조하여 명령 출력의 필드를 Python 객체에 매핑할 수 있습니다. Junos PyEZ 릴리스 2.4.0부터 Junos PyEZ op 테이블은 TextFSM 템플릿을 단독으로 또는 뷰와 함께 참조하여 명령 출력을 구문 분석할 수도 있습니다. Junos PyEZ op 테이블은 TextFSM 템플릿을 사용하여 벤더, 네트워크 운영 체제 또는 명령에 관계없이 모든 네트워크 디바이스의 명령 출력을 구문 분석할 수 있습니다.

TextFSM 는 네트워크 디바이스에서 show 명령 출력과 같은 반형식 CLI 출력을 구문 분석하는 Python 라이브러리입니다. Google에서 개발했으며 나중에 Apache 2.0 라이선스로 출시되었습니다. 모듈에는 템플릿과 일부 입력 텍스트가 필요합니다. 템플릿은 정규식을 사용하여 데이터를 구문 분석하는 방법을 설명하며, 여러 템플릿을 정의하고 동일한 데이터에 적용할 수 있습니다.

TextFSMCliTable 의 클래스를 사용하면 사용자가 지정된 플랫폼의 명령을 명령 출력을 구문 분석하는 템플릿에 매핑할 수 있습니다. 네트워크 자동화 회사인 Network to Code네트워크 디바이스용 TextFSM 템플릿 리포지토리와 함께 Python 래퍼 CliTable 를 개발했습니다. Junos PyEZ 서버 또는 가상 환경에 라이브러리를 적절하게 설치한 ntc-templates 다음 Junos PyEZ 테이블에서 NTC 템플릿 및 기타 TextFSM 템플릿을 참조할 수 있습니다.

NTC 템플릿은 네트워크 디바이스에서 show 명령 출력을 구문 분석합니다. 각 NTC 템플릿은 주어진 명령에 대해 예상되는 출력 필드를 정의하고 각 항목에 대해 데이터를 헤더에 매핑합니다. NTC 템플릿 파일 이름은 공급업체, 네트워크 운영 체제 및 명령(밑줄 포함)을 식별하므로 시스템은 주어진 플랫폼 및 명령에 사용할 템플릿을 쉽게 결정할 수 있습니다.

juniper_junos_show_arp_no-resolve.textfsm 템플릿을 예로 들어 보겠습니다.

템플릿은 주니퍼 네트웍스 Junos 디바이스의 명령 출력을 구문 분석 show arp no-resolve 합니다.

Junos PyEZ op 테이블은 NTC 템플릿 또는 기타 TextFSM 템플릿을 사용하여 비정형 명령 출력을 구문 분석할 수 있습니다. 테이블은 다음 필드를 정의하여 TextFSM 템플릿을 사용합니다. Junos PyEZ는 platformcommand 값을 사용하여 템플릿의 파일 이름을 결정합니다.

  • command: command- 구문 분석할 출력을 생성하는 명령입니다. 명령은 NTC 템플릿 또는 다른 TextFSM 템플릿의 파일 이름에 있는 명령 문자열에 매핑해야 합니다.

  • key: key- 레코드 항목을 고유하게 식별하는 데 사용되는 TextFSM 템플릿 또는 Junos PyEZ 뷰에 정의된 필드입니다.

  • platform: platform- TextFSM 템플릿의 공급업체 및 운영 체제(예: juniper_junos)입니다. 플랫폼 값은 NTC 템플릿 또는 다른 TextFSM 템플릿의 파일 이름에 있는 플랫폼 문자열과 일치해야 합니다.

  • use_textfsm: True- Junos PyEZ 테이블이 지정된 플랫폼 및 명령에 대한 TextFSM 템플릿을 사용하여 명령 출력을 구문 분석해야 함을 나타냅니다.

TextFSM 템플릿을 사용하여 명령 출력을 구문 분석하는 방법

Junos PyEZ 테이블은 사전 정의된 NTC 템플릿을 포함한 TextFSM 템플릿을 사용하여 Junos 디바이스의 show 명령 출력을 구문 분석할 수 있습니다.

Junos PyEZ 테이블에서 TextFSM 템플릿을 사용하려면 다음을 수행합니다.

  1. ntc-templates Junos PyEZ 서버 또는 가상 환경에 라이브러리를 설치합니다.

  2. , key, platform, 인수 use_textfsm 뿐만 아니라 작업에 필요한 추가 인수를 포함하는 command사용자 지정 Junos PyEZ 테이블을 생성합니다.

    Junos PyEZ 애플리케이션은 및 command 값을 platform 사용하여 템플릿의 파일 이름(이 경우 juniper_junos_show_arp_no-resolve.textfsm)을 결정합니다.

  3. 테이블을 사용하여 데이터를 검색하는 Junos PyEZ 애플리케이션을 생성합니다.

  4. 응용 프로그램을 실행합니다.

    테이블은 NTC 템플릿을 사용하여 출력 필드를 추출합니다. 각 테이블 항목에 대해 응용 프로그램은 각 필드에 대해 정의된 키와 데이터를 반환합니다.

Junos PyEZ 보기와 함께 TextFSM 템플릿을 사용하여 명령 출력을 구문 분석하는 방법

Junos PyEZ 테이블은 TextFSM 템플릿과 Junos PyEZ 뷰를 결합하여 명령 출력을 구문 분석할 수 있습니다. TextFSM 템플릿은 데이터를 헤더에 매핑합니다. View(보기)에서 변수 이름을 반환하려는 필드에 대한 템플릿에 정의된 제목에 매핑할 수 있습니다. 예를 들어 템플릿에 정의된 것과 다른 변수 이름을 사용하거나 다른 필드를 반환하려는 경우에 유용합니다. Junos PyEZ는 TextFSM 템플릿과 Junos PyEZ 뷰 모두에 공통적인 필드만 반환합니다.

다음 예제에서는 juniper_junos_show_arp_no-resolve.textfsm 템플릿을 사용하여 명령 출력을 구문 분석합니다. Junos PyEZ 뷰는 데이터를 새 변수 이름에 매핑하고 필드의 하위 집합만 반환합니다. 템플릿을 검토하려면 TextFSM 템플릿 이해를 참조하십시오.

Junos PyEZ 테이블에서 TextFSM 템플릿과 뷰를 사용하려면 다음을 수행합니다.

  1. , , , use_textfsmview 인수와 작업에 필요한 추가 인수를 포함하는 command사용자 지정 Junos PyEZ platform테이블을 생성합니다. key

  2. 반환할 템플릿 필드와 각 필드에 해당하는 변수 이름을 정의하는 Junos PyEZ 뷰를 생성합니다.

    이 경우 View는 TextFSM 템플릿에 FLAGS 정의된 필드를 매핑하지 않으며 구문 분석된 데이터에는 이 값이 포함되지 않습니다.

  3. 테이블을 사용하여 데이터를 검색하는 Junos PyEZ 애플리케이션을 생성합니다.

  4. 응용 프로그램을 실행합니다.

    테이블은 NTC 템플릿과 뷰를 사용하여 출력 필드를 추출합니다. 각 테이블 항목에 대해 응용 프로그램은 정의된 키와 뷰에 정의된 변수 이름에 매핑된 필드에 대한 데이터를 반환합니다.

사용자 지정 TextFSM 템플릿 사용 방법

Junos PyEZ 테이블은 패키지의 ntc-templates 일부로 설치된 TextFSM 템플릿을 사용하거나 사용자 지정 TextFSM 템플릿을 참조할 수 있습니다. Junos PyEZ 애플리케이션에서 사용자 지정 TextFSM 템플릿을 사용하려면 템플릿을 스테이징한 다음 테이블 인스턴스를 정의할 때 템플릿 디렉터리의 절대 경로를 지정해야 합니다.

Junos PyEZ 테이블에서 사용자 지정 TextFSM 템플릿을 사용하려면 다음을 수행합니다.

  1. 사용자 지정 템플릿에 대한 디렉터리를 만듭니다.

  2. templates 디렉터리에서 템플릿을 만들고 .textfsm 파일 이름 규칙을 사용하여 platform_command 파일 이름을 지정합니다.

  3. 템플릿 파일명과 동일 platform 하고 command 값을 정의하는 Junos PyEZ 테이블을 생성합니다.

  4. Junos PyEZ 애플리케이션에서 테이블 인스턴스를 정의할 때 사용자 지정 템플릿 디렉터리의 절대 경로를 지정합니다.

  5. 응용 프로그램을 실행합니다.

Junos PyEZ Tables를 TextFSM 템플릿과 함께 사용하여 벤더의 명령 출력을 구문 분석하는 방법

Junos PyEZ 테이블은 TextFSM 템플릿을 사용하여 모든 벤더의 네트워크 디바이스에서 명령 출력을 구문 분석할 수 있습니다. Python 애플리케이션에서 출력을 검색하거나 파일에서 출력을 읽을 수 있습니다. 그런 다음 Junos PyEZ 테이블 인스턴스를 생성할 때 인스턴스를 전달하는 대신 명령 출력 문자열을 테이블의 raw 인수에 전달할 수 있습니다 Device .

예를 들어 다음과 같은 TextFSM 템플릿을 생각해 볼 수 있습니다.

템플릿은 지정된 디바이스의 명령 출력을 구문 분석 show alarms detail 합니다.

다음 예제에서는 View와 함께 사용자 지정 TextFSM 템플릿 cisco_xr_show_alarms_detail.textfsm을 사용하여 명령 출력을 구문 분석 show alarms detail 하는 Junos PyEZ 테이블을 정의합니다. 이 예제에서는 라이브러리를 사용하여 netmiko 장치에서 직접 데이터를 검색합니다. 응용 프로그램에서 Table 인스턴스를 만들 때 인수는 raw 명령 출력을 전달하고 인수는 template_dir 사용자 지정 템플릿이 포함된 디렉터리의 경로를 정의합니다.

응용 프로그램을 실행하면 장치에서 명령 출력을 검색하고 View와 함께 지정된 디렉터리의 TextFSM 템플릿을 사용하여 출력을 구문 분석합니다. Junos PyEZ는 TextFSM 템플릿과 Junos PyEZ 뷰 모두에 공통적인 필드만 반환합니다. 또한 응용 프로그램은 명령 출력을 파일에 저장하므로 다음 예제와 같이 나중에 출력을 처리할 수 있습니다.

다음 예제에서는 이전 예제와 동일한 TextFSM 템플릿과 Junos PyEZ View를 사용하지만, 이 경우 파일에서 명령 출력을 읽습니다.