Ejemplo: agregar interfaces T1 a un grupo RIP
En este ejemplo se muestra cómo usar scripts de confirmación para reducir la cantidad de configuración manual, específicamente cómo agregar cada interfaz T1 configurada en el nivel de [edit interfaces]
jerarquía al [edit protocols rip group test]
nivel de jerarquía.
Requisitos
En este ejemplo se utiliza un dispositivo que ejecuta Junos OS con interfaces T1.
Descripción general y script de confirmación
Si desea habilitar RIP en una interfaz, debe realizar cambios en los niveles y jerárquico [edit interfaces]
[edit protocols rip]
. En este ejemplo se muestra cómo usar scripts de confirmación para agregar todas las interfaces T1 configuradas en el nivel de [edit interfaces]
jerarquía al nivel de [edit protocols rip group test]
jerarquía. En este ejemplo no se incluyen errores, advertencias ni mensajes de registro del sistema. Los cambios en la configuración se realizan de forma silenciosa.
El script de ejemplo se muestra en las 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:variable name="all-t1" select="interfaces/interface[starts-with(name, 't1-')]"/> <xsl:if test="$all-t1"> <change> <protocols> <rip> <group> <name>test</name> <xsl:for-each select="$all-t1"> <xsl:variable name="ifname" select="concat(name, '.0')"/> <neighbor> <name><xsl:value-of select="$ifname"/></name> </neighbor> </xsl:for-each> </group> </rip> </protocols> </change> </xsl:if> </xsl:template> </xsl:stylesheet>
Sintaxis de 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 { var $all-t1 = interfaces/interface[starts-with(name, 't1-')]; if ($all-t1) { <change> { <protocols> { <rip> { <group> { <name> "test"; for-each ($all-t1) { var $ifname = name _ '.0'; <neighbor> { <name> $ifname; } } } } } } } }
Configuración
Procedimiento
Procedimiento paso a paso
Para descargar, habilitar y probar el script:
Copie el script en un archivo de texto, asígnele el nombre rip-t1.xsl o rip-t1.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 está utilizando la versión SLAX del script, cambie el nombre de archivo en el
[edit system scripts commit file]
nivel de jerarquía a rip-t1.slax.system { scripts { commit { file rip-t1.xsl; } } } interfaces { t1-0/0/0 { unit 0 { family iso; } } t1-0/0/1 { unit 0 { family iso; } } t1-0/0/2 { unit 0 { family iso; } } t1-0/0/3 { unit 0 { family iso; } } t1-0/1/0 { unit 0 { family iso; } } t1-0/1/1 { unit 0 { family iso; } } t1-0/1/2 { unit 0 { family iso; } } t1-0/1/3 { unit 0 { family iso; } } }
En el modo de configuración, ejecute 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 mouse y el icono de pegar.
Presione Entrar.
Presione Ctrl+d.
Confirme la configuración.
user@host# commit
Verificación
Verificación de la configuración
Propósito
Compruebe que el script se comporta como se esperaba.
Acción
Emita el show protocols rip group test
comando. Ahora todas las interfaces T1 deben aparecer bajo el nivel de [edit protocols rip group test]
jerarquía.
[edit] user@host# show protocols rip group test neighbor t1-0/0/0.0; neighbor t1-0/0/1.0; neighbor t1-0/0/2.0; neighbor t1-0/0/3.0; neighbor t1-0/1/0.0; neighbor t1-0/1/1.0; neighbor t1-0/1/2.0; neighbor t1-0/1/3.0;