Exemplo: exibir informações de nome de host da DNS usando um script op
Este exemplo usa um script op para exibir informações do Domain Name System (DNS) para um dispositivo em sua rede.
Requisitos
Este exemplo usa um dispositivo que executa o Junos OS.
Visão geral e script de operação
Este script exibe informações de DNS para um dispositivo em sua rede. O script oferece uma pequena melhoria sobre o show host hostname comando, porque você não precisa entrar em um nome de host ou endereço IP para visualizar informações de DNS para o dispositivo que você está usando no momento.
Não há uma linguagem de marcação extensível (XML) Junos para o show host hostname comando. Portanto, este script usa o show host hostname comando diretamente em vez de usar uma chamada de procedimento remoto (RPC).
O script é fornecido em duas versões distintas, uma usando o <xsl:choose> elemento e outra usando a jcs:first-of() função. Ambas as versões aceitam o mesmo argumento e produzem a mesma saída. Cada versão é mostrada em sintaxe XSLT e SLAX.
Sintaxe XSLT Usando o <xsl:escolha> Elemento
<?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>
Sintaxe XSLT Usando a função jcs:first-of()
<?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>
Sintaxe SLAX Usando o elemento <xsl:escolha>
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;
}
}
Sintaxe SLAX Usando a função jcs:first-of()
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;
}
}
Configuração
Procedimento
Procedimento passo a passo
Baixar, habilitar e testar o script:
Copie o script XSLT ou SLAX em um arquivo de texto, nomeie o hostname.xsl ou hostname.slax conforme apropriado e copie-o para o /var/db/scripts/op/ directory no dispositivo.
No modo de configuração, inclua a
filedeclaração no nível de[edit system scripts op]hierarquia e hostname.xsl ou hostname.slax conforme apropriado.[edit system scripts op] user@host# set file hostname.(slax | xsl)
Emite o
commit and-quitcomando para comprometer a configuração e voltar ao modo operacional.[edit] user@host# commit and-quit
Execute o script de operação emitindo o comando de
op hostname <dns (hostname | address)>modo operacional.
Verificação
Verificando a execução do script de compromisso
Propósito
Verifique se o script se comporta como esperado.
Ação
Quando você emite o comando do op hostname modo operacional sem a opção dns , as informações de DNS são exibidas para o dispositivo local:
user@host1> op hostname Name: host1 has address 10.168.71.246
Quando você emite o comando, as op hostname dns hostname informações de DNS são exibidas para o dispositivo especificado:
user@host1> op hostname dns router1 Name: router1 has address 10.168.71.249
Quando você emite o comando, as op hostname dns address informações de DNS são exibidas para o endereço especificado:
user@host1> op hostname dns 10.168.71.249 Name: 249.71.168.10.IN-ADDR.ARPA domain name pointer router1