Ejemplo: requiere cronómetro interno en interfaces T1
En este ejemplo, se muestra cómo usar una secuencia de comandos de confirmación para requerir que las interfaces T1 se configuren con reloj interno.
Requisitos
En este ejemplo, se usa un dispositivo que ejecuta Junos OS con interfaces T1.
Descripción general y script de confirmación
Esta secuencia de comandos de confirmación garantiza que las interfaces T1 estén explícitamente configuradas para usar el reloj interno. Si la clocking
instrucción no se incluye en la configuración o si la clocking external
instrucción está incluida, se genera un mensaje de error y la configuración no se confirma.
El script de ejemplo se muestra en la sintaxis XSLT y SLAX:
Sintaxis 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:template match="configuration"> <xsl:for-each select="interfaces/interface[starts-with(name, 't1-')]"> <xsl:variable name="clock-source"> <xsl:value-of select="clocking"/> </xsl:variable> <xsl:if test="not($clock-source = 'internal')"> <!-- or xsl:if test="$clock-source != 'internal'" --> <xnm:error> <xsl:call-template name="jcs:edit-path"/> <xsl:call-template name="jcs:statement"> <xsl:with-param name="dot" select="clocking"/> </xsl:call-template> <message> This T1 interface should have internal clocking. </message> </xnm:error> </xsl:if> </xsl:for-each> </xsl:template> </xsl:stylesheet>
Sintaxis 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"; match configuration { for-each (interfaces/interface[starts-with(name, 't1-')]) { var $clock-source = { expr clocking; } if (not($clock-source = 'internal')) { <xnm:error> { call jcs:edit-path(); call jcs:statement($dot = clocking); <message> "This T1 interface should have internal clocking."; } } } }
Configuración
Procedimiento
Procedimiento paso a paso
Para descargar, habilitar y probar el script:
Copie el script en un archivo de texto, asigne un nombre al archivo clocking-error.xsl o clocking-error.slax según corresponda, y cópielo en el directorio /var/db/scripts/commit/ del dispositivo.
Seleccione las siguientes estrofas de configuración de prueba y presione Ctrl + c para copiarlas en el portapapeles.
Si utiliza la versión SLAX de la secuencia de comandos, cambie el nombre de archivo en el
[edit system scripts commit file]
nivel jerárquico a clocking-error.slax.system { scripts { commit { file clocking-error.xsl; } } } interfaces { t1-0/0/0 { clocking external; } t1-0/0/1 { unit 0; } }
En el modo de configuración, emita el
load merge terminal
comando para combinar las estrofas en la configuración del dispositivo.[edit] user@host# load merge terminal [Type ^D at a new line to end input] ... Paste the contents of the clipboard here ...
En el indicador, pegue el contenido del portapapeles con el ratón y el icono de pegar.
Presione Intro.
Presione Ctrl + d.
Confirme la configuración.
user@host# commit
Verificación
Verificar la ejecución de scripts de confirmación
Propósito
Compruebe que la secuencia de comandos se comporte como se esperaba.
Acción
Revise el resultado del commit
comando. Las estrofas de configuración de ejemplo configuran dos interfaces T1-0/0/0 y t1-0/0/1. La interfaz t1-0/0/0 está configurada con la instrucción, y la clocking external
interfaz t1-0/0/1 no incluye ninguna clocking
instrucción. El script genera un error y se produce un error en la operación de confirmación. El siguiente resultado aparece después de emitir un commit
comando:
[edit] user@host# commit [edit interfaces interface t1-0/0/0] 'clocking external;' This T1 interface should have internal clocking. [edit interfaces interface t1-0/0/1] ';' This T1 interface should have internal clocking. error: 2 errors reported by commit scripts error: commit script failure