이 페이지의
예: Op 스크립트를 사용하여 DNS 호스트 이름 정보 표시
이 예에서는 운영 스크립트를 사용하여 네트워크의 장치에 대한 DNS(Domain Name System) 정보를 표시합니다.
요구 사항
이 예에서는 Junos OS를 실행하는 디바이스를 사용합니다.
개요 및 운영 스크립트
이 스크립트는 네트워크의 장치에 대한 DNS 정보를 표시합니다. 이 스크립트는 현재 사용하고 있는 장비의 show host hostname
DNS 정보를 보기 위해 호스트 이름이나 IP 주소를 입력할 필요가 없기 때문에 명령어에 대해 약간의 개선을 제공합니다.
명령에 상응하는 Junos XML(Extensible Markup Language)은 show host hostname
없습니다. 따라서 이 스크립트는 show host hostname
RPC( Remote Procedure Call )를 사용하는 대신 명령을 직접 사용합니다.
스크립트는 요소를 사용하고 다른 하나는 기능을 사용하는 <xsl:choose>
두 개의 서로 다른 버전으로 jcs:first-of()
제공됩니다. 두 버전 모두 동일한 인수를 수용하고 동일한 출력을 생성합니다. 각 버전은 XSLT 및 SLAX 구문에 모두 표시됩니다.
XSLT 구문 <xsl:선택> 요소를 사용
<?xml version="1.0" standalone="yes"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:junos="http://xml.juniper.net/junos/*/junos" xmlns:xnm="http://xml.juniper.net/xnm/1.1/xnm" xmlns:jcs="http://xml.juniper.net/junos/commit-scripts/1.0"> <xsl:import href="../import/junos.xsl"/> <xsl:variable name="arguments"> <argument> <name>dns</name> <description>Name or IP address of a host</description> </argument> </xsl:variable> <xsl:param name="dns"/> <xsl:template match="/"> <op-script-results> <xsl:variable name="query"> <xsl:choose> <xsl:when test="$dns"> <command> <xsl:value-of select="concat('show host ', $dns)"/> </command> </xsl:when> <xsl:when test="$hostname"> <command> <xsl:value-of select="concat('show host ', $hostname)"/> </command> </xsl:when> </xsl:choose> </xsl:variable> <xsl:variable name="result" select="jcs:invoke($query)"/> <xsl:variable name="host" select="$result"/> <output> <xsl:value-of select="concat('Name: ', $host)"/> </output> </op-script-results> </xsl:template> </xsl:stylesheet>
jcs를 사용하는 XSLT 구문:첫 번째() 기능
<?xml version="1.0" standalone="yes"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:junos="http://xml.juniper.net/junos/*/junos" xmlns:xnm="http://xml.juniper.net/xnm/1.1/xnm" xmlns:jcs="http://xml.juniper.net/junos/commit-scripts/1.0"> <xsl:import href="../import/junos.xsl"/> <xsl:variable name="arguments"> <argument> <name>dns</name> <description>Name or IP address of a host</description> </argument> </xsl:variable> <xsl:param name="dns"/> <xsl:template match="/"> <op-script-results> <xsl:variable name="target" select="jcs:first-of($dns, $hostname)"/> <xsl:variable name="query"> <command> <xsl:value-of select="concat('show host ', $target)"/> </command> </xsl:variable> <xsl:variable name="result" select="jcs:invoke($query)"/> <xsl:variable name="host" select="$result"/> <output> <xsl:value-of select="concat('Name: ', $host)"/> </output> </op-script-results> </xsl:template> </xsl:stylesheet>
SLAX 구문 <xsl:선택> 요소를 사용
version 1.0; ns junos = "http://xml.juniper.net/junos/*/junos"; ns xnm = "http://xml.juniper.net/xnm/1.1/xnm"; ns jcs = "http://xml.juniper.net/junos/commit-scripts/1.0"; import "../import/junos.xsl"; var $arguments = { <argument> { <name> "dns"; <description> "Name or IP address of a host"; } } param $dns; match / { <op-script-results> { var $query = { if ($dns) { <command> 'show host ' _ $dns; } else if ($hostname) { <command> 'show host ' _ $hostname; } } var $result = jcs:invoke($query); var $host = $result; <output> 'Name: ' _ $host; } }
jcs를 사용하는 SLAX 구문:첫 번째() 기능
version 1.0; ns junos = "http://xml.juniper.net/junos/*/junos"; ns xnm = "http://xml.juniper.net/xnm/1.1/xnm"; ns jcs = "http://xml.juniper.net/junos/commit-scripts/1.0"; import "../import/junos.xsl"; var $arguments = { <argument> { <name> "dns"; <description> "Name or IP address of a host"; } } param $dns; match / { <op-script-results> { var $target = jcs:first-of($dns, $hostname); var $query = { <command> 'show host ' _ $target; } var $result = jcs:invoke($query); var $host = $result; <output> 'Name: ' _ $host; } }
구성
절차
단계별 절차
스크립트를 다운로드, 활성화, 테스트하려면 다음을 수행합니다.
XSLT 또는 SLAX 스크립트를 텍스트 파일에 복사하고 파일 hostname.xsl 또는 hostname.slax 의 이름을 지정하고 장비의 /var/db/scripts/op/ directory에 복사합니다.
구성 모드에서
[edit system scripts op]
계층 수준의 명령문과 hostname.xsl 또는 hostname.slax를 적절하게 포함합니다file
.[edit system scripts op] user@host# set file hostname.(slax | xsl)
commit and-quit
명령을 실행하여 구성을 커밋하고 운영 모드로 돌아갑니다.[edit] user@host# commit and-quit
운영 모드 명령을 실행하여 운영 스크립트를
op hostname <dns (hostname | address)>
실행합니다.
확인
커밋 스크립트 실행 검증
목적
스크립트가 예상대로 작동하는지 확인합니다.
작업
옵션 없이 dns
운영 모드 명령을 실행 op hostname
하면 로컬 디바이스에 대한 DNS 정보가 표시됩니다.
user@host1> op hostname Name: host1 has address 10.168.71.246
명령을 실행 op hostname dns hostname
하면 지정된 장비에 대한 DNS 정보가 표시됩니다.
user@host1> op hostname dns router1 Name: router1 has address 10.168.71.249
명령을 실행 op hostname dns address
하면 지정된 주소에 대한 DNS 정보가 표시됩니다.
user@host1> op hostname dns 10.168.71.249 Name: 249.71.168.10.IN-ADDR.ARPA domain name pointer router1