Ejemplo: Imponer una configuración mínima de MTU
La unidad máxima de transmisión (MTU) es la mayor cantidad de datos o tamaño de paquete (en bytes) que se puede transferir en una sola trama física en una red. En este ejemplo, una secuencia de comandos de confirmación prueba la MTU de las interfaces SONET/SDH. Si la MTU es menor que un valor mínimo especificado, la secuencia de comandos de confirmación informa el error y hace que se produzca un error en la operación de confirmación.
Requisitos
En este ejemplo, se usa un dispositivo que ejecuta Junos OS con interfaces SONET/SDH.
Descripción general y script de confirmación
En este ejemplo, se prueba la MTU de las interfaces SONET/SDH, se informa cuando la MTU es menor que el valor del min-mtu
parámetro, aquí establecido en 2048, y hace que se produzca un error en la operación de confirmación. El for
bucle selecciona todas las interfaces SONET/SDH que comiencen por so- y que tengan una instrucción MTU definida y menor que el valor de min-mtu
. Para las interfaces seleccionadas, el script genera un error, que incluye la ubicación de la interfaz en la jerarquía de configuración y la MTU configurada para esa interfaz.
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:param name="min-mtu" select="2048"/> <xsl:template match="configuration"> <xsl:for-each select="interfaces/interface[starts-with(name, 'so-') and mtu and mtu < $min-mtu]"> <xnm:error> <xsl:call-template name="jcs:edit-path"/> <xsl:call-template name="jcs:statement"> <xsl:with-param name="dot" select="mtu"/> </xsl:call-template> <message> <xsl:text>SONET interfaces must have a minimum MTU of </xsl:text> <xsl:value-of select="$min-mtu"/> <xsl:text>.</xsl:text> </message> </xnm:error> </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"; param $min-mtu = 2048; match configuration { for-each (interfaces/interface[starts-with(name, 'so-') and mtu and mtu < $min-mtu]) { <xnm:error> { call jcs:edit-path(); call jcs:statement($dot = mtu); <message> { expr "SONET interfaces must have a minimum MTU of "; expr $min-mtu; expr "."; } } } }
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 so-mtu.xsl o so-mtu.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 so-mtu.slax.system { scripts { commit { file so-mtu.xsl; } } } interfaces { so-1/2/2 { mtu 2048; } so-1/2/3 { mtu 576; } }
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 salida de la secuencia de comandos 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 SONET/SDH so-1/2/2 y so-1/2/3. La interfaz so-1/2/3 está configurada con una MTU de 576, por lo que la secuencia de comandos genera un mensaje de 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 so-1/2/3] 'mtu 576;' SONET interfaces must have a minimum MTU of 2048. error: 1 error reported by commit scripts error: commit script failure