Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

커밋 스크립트 문제 해결

커밋 스크립트를 활성화하고 명령을 실행 commit 하면 커밋 스크립트가 즉시 적용됩니다.

표 1 에서는 발생할 수 있는 몇 가지 일반적인 문제를 설명합니다.

표 1: 커밋 스크립트 문제 해결

문제

솔루션

명령의 commit check | display detail 출력은 예상 커밋 스크립트를 참조하지 않습니다.

계층 수준에서 각 스크립트에 대한 명령문을 포함하여 file 모든 스크립트를 [edit system scripts commit] 활성화했는지 확인합니다.

출력에는 다음과 같은 오류 메시지가 포함되어 있습니다.

error: could not open commit script: 
/var/db/scripts/commit/filename:
No such file or directory

커밋 스크립트가 스위치, 라우터 또는 보안 디바이스의 /var/db/scripts/commit/ directory에 있는지 확인합니다.

다음과 같은 오류 및 경고 메시지가 나타납니다.

error: invalid transient change 
generated by commit script: filename 
 warning: 1 transient change was generated 
without [system scripts commit allow-transients]

커밋 스크립트 중 하나에 임시 변경을 생성하는 지침이 포함되어 있지만 임시 변경을 활성화하지는 않았습니다.

이 문제를 해결하려면 다음 작업 중 하나를 수행합니다.

  • allow-transients 계층 수준에서 명령 [edit system scripts commit] 문을 포함합니다.

  • 표시된 스크립트에서 임시 변경을 생성하는 코드를 제거합니다.

  • 구성에서 스크립트를 비활성화합니다.

예상되는 조치가 발생하지 않습니다.

예를 들어, 경고 메시지를 연상시키는 문제가 구성에 포함되어 있더라도 경고 메시지가 나타나지 않습니다.

  1. 스크립트를 활성화했는지 확인합니다. 스크립트를 사용할 수 없는 경우 무시됩니다.

    스크립트를 사용하려면 계층 수준에서 명령문을 [edit system scripts commit] 포함 file filename 하십시오.

  1. 스크립트에 필요한 상용 표준이 포함되어 있는지 확인합니다. 자세한 내용은 커밋 스크립트를 위한 필수 상용구(Required Boilerplate)를 참조하십시오.

  1. 스크립트의 XPath(Extensible Markup Language Path) 표현식에 Junos XML 프로토콜 태그 요소로 표현되는 유효한 Junos OS CLI(Command-Line Interface) 명령문이 포함되어 있는지 확인합니다.

    Junos XML API 구성 개발자 참조를 확인하거나 운영 모드 명령을 실행하여 XML 계층을 show configuration | display xml 확인할 수 있습니다.

  1. 스크립트의 프로그래밍 명령이 올바른 컨텍스트 노드를 참조하는지 확인합니다.

    한 명령을 다른 명령 안에 중첩하면 외부 명령이 컨텍스트 노드를 변경하므로 내부 명령이 외부에 상대적이어야 합니다.

    예를 들어 명령어에는 <xsl:for-each> 컨텍스트 노드를 변경하는 XPath 표현식이 포함되어 있습니다. 따라서 네스티드 명령어(nested instruction) <xsl:if> 는 XPath 표현식과 관련된 XPath 표현식을 interfaces/interface[starts-with(name, 't1-')] 사용합니다.

    <xsl:for-each select="interfaces/
         interface[starts-with(name, 't1-')]">
    <xsl:if test="not(description)">

커밋 작업에 실패하고 시스템 로그 파일의 오류 메시지는 다음을 나타냅니다.

Process (pid,cscript) attempted to exceed RLIMIT_DATA

하나 이상의 커밋 스크립트에 의해 검사되는 구성을 커밋할 때 대규모 구성의 처리를 수용하기 위해 커밋 스크립트에 할당되는 메모리의 양을 늘려야 할 수도 있습니다.

기본적으로 실행된 스크립트의 데이터 세그먼트 부분에 할당되는 최대 메모리 양은 시스템의 전체 가용 메모리의 절반으로 최대 128MB의 값입니다. 실행된 각 커밋 스크립트에 할당되는 최대 메모리를 늘리려면 구성을 커밋하기 전에 계층 수준에서 적절한 메모리 제한 바이트로 [edit system scripts commit] 명령문을 구성 max-datasize size 합니다.