EN ESTA PÁGINA
Ejemplo: cambiar la configuración mediante scripts operativos SLAX y XSLT
En este ejemplo se explica cómo realizar cambios estructurados en la configuración de Junos OS mediante un script de operación SLAX.
Configuración del dispositivo
Procedimiento paso a paso
Para descargar, habilitar y probar el script:
Copie el script en un archivo de texto, asigne al archivo el nombre config-change.slax y cópielo en el directorio /var/db/scripts/op/ del dispositivo.
En el modo de configuración, configure el nombre de archivo del script en el nivel jerárquico
[edit system scripts op file]
.[edit system scripts op] user@host# set file config-change.slax
Emita el
commit and-quit
comando para confirmar la configuración y volver al modo operativo.[edit] user@host# commit and-quit
Antes de ejecutar el script, emita el comando de
show interfaces interface-name
modo operativo y registre el estado actual de la interfaz que el script deshabilitará.Ejecute el script op.
user@host> op config-change This script disables the interface specified by the user. The script modifies the candidate configuration to disable the interface and commits the configuration to activate it. Enter interface to disable: so-0/0/0
Requisitos
En este ejemplo se utiliza un dispositivo que ejecuta Junos OS.
Descripción general y script de operación
Los scripts de operación SLAX y XSLT pueden utilizar la jcs:load-configuration
plantilla, que se encuentra en el archivo de importación junos.xsl , para realizar cambios estructurados en la configuración de Junos OS. En este ejemplo se crea un script de operación SLAX que utiliza la jcs:load-configuration
plantilla para deshabilitar una interfaz en un dispositivo que ejecuta Junos OS. Todos los valores necesarios para la jcs:load-configuration
plantilla se definen como variables, que luego se pasan a la plantilla.
En este ejemplo, la usage
variable se inicializa con una descripción general de la función del script. Cuando ejecuta el script, llama a la jcs:output()
función para generar la descripción de uso en la CLI. Esto le permite comprobar que está utilizando el script para el propósito correcto.
El script llama a la jcs:get-input()
función, que solicita el nombre de la interfaz que desea deshabilitar, y almacena el nombre de la interfaz en la interface
variable. La config-changes
variable almacena los datos de configuración XML de Junos para cargarlos en el dispositivo y hace referencia a la interface
variable. La jcs:load-configuration
llamada a la plantilla establece el valor del configuration
parámetro en los datos almacenados en la config-changes
variable.
La load-action
variable se establece en merge
, que combina los nuevos datos de configuración con la configuración candidata. Este es el equivalente del comando load merge
de modo de configuración de CLI.
La options
variable define las opciones de la operación de confirmación. Utiliza el :=
operador para crear un node-set, que se pasa a la plantilla como el valor del commit-options
parámetro. En este ejemplo se incluye la log
etiqueta para agregar la descripción de la confirmación al registro de confirmación para referencia futura.
La llamada a la jcs:open()
función abre una conexión con el proceso de administración de Junos OS (mgd) en el dispositivo local y devuelve un identificador de conexión que se almacena en la conn
variable. A continuación, el script llama a la jcs:load-configuration
plantilla.
El :=
operador copia los resultados de la jcs:load-configuration
llamada de plantilla a una variable temporal y ejecuta la node-set
función en esa variable. El conjunto de nodos resultante se almacena en la results
variable. El :=
operador se asegura de que la results
variable es un conjunto de nodos en lugar de un fragmento de árbol de resultados para que el script pueda acceder al contenido.
La jcs:close()
función cierra la conexión con el dispositivo. De forma predeterminada, la jcs:load-configuration
plantilla no envía mensajes a la CLI. En este ejemplo se buscan e imprimen xmn:warning
mensajes xnm:error
en la respuesta para identificar rápidamente cualquier problema relacionado con la confirmación.
Sintaxis de SLAX
version 1.2; 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"; ns ext = "http://xmlsoft.org/XSLT/namespace"; import "../import/junos.xsl"; match / { <op-script-results> { var $usage = "This script disables the specified interface." _ "The script modifies the candidate configuration to disable " _ "the interface and commits the configuration to activate it."; var $temp = jcs:output($usage); var $interface = jcs:get-input("Enter interface to disable: "); var $config-changes = { <configuration> { <interfaces> { <interface> { <name> $interface; <disable>; } } } } var $load-action = "merge"; var $options := { <commit-options> { <log> "disabling interface " _ $interface; } } var $conn = jcs:open(); var $results := { call jcs:load-configuration( $action=$load-action, $commit-options=$options, $configuration=$config-changes, $connection=$conn); } var $close-results = jcs:close($conn); if ($results//xnm:error) { for-each ($results//xnm:error) { <output> message; } } if ($results//xnm:warning) { for-each ($results//xnm:warning) { <output> message; } } } }
Verificación
Verificación de la confirmación
Propósito
Compruebe que la confirmación se ha realizado correctamente.
Acción
Debe incluir código en el script que analice el conjunto de nodos devuelto por la jcs:load-configuration
plantilla en busca de errores o advertencias. Esto le permite determinar más fácilmente si la confirmación se realizó correctamente. Si no hay mensajes de advertencia o error, puede verificar el éxito de la confirmación de varias maneras.
Compruebe el registro de confirmación para comprobar que la confirmación se ha realizado correctamente. Si incluyó la
log
opción en elcommit-options
parámetro, el mensaje debería estar visible en el registro de confirmación junto con la información de confirmación.user@host> show system commit 0 2010-09-22 17:08:17 PDT by user via junoscript disabling interface so-0/0/0
Compruebe el archivo de mensajes syslog para comprobar que se registró la operación de confirmación. En este caso, también verá un
SNMP_TRAP_LINK_DOWN
mensaje para la interfaz deshabilitada so-0/0/0. En función de la configuración de traceoptions, este mensaje puede aparecer o no en el archivo de registro.user@host> show log messages | last Sep 22 17:08:13 host file[7319]: UI_COMMIT: User 'user' requested 'commit' operation (comment: disabling interface so-0/0/0) Sep 22 17:08:16 host mib2d[1434]: SNMP_TRAP_LINK_DOWN: ifIndex 526, ifAdminStatus down(2), ifOperStatus down(2), ifName so-0/0/0
Comprobación de los cambios de configuración
Propósito
Compruebe que los cambios correctos están integrados en la configuración.
Acción
Muestre la configuración y compruebe que los cambios son visibles para la interfaz especificada.
user@host> show configuration interfaces so-0/0/0 disable;
En este ejemplo, también puede emitir el comando de
show interfaces interface-name
modo operativo para comprobar que la interfaz estaba deshabilitada. En este caso, la salida capturada antes de deshabilitar la interfaz muestra que la interfaz esEnabled
.user@host> show interfaces so-0/0/0 Physical interface: so-0/0/0, Enabled, Physical link is Up Interface index: 128, SNMP ifIndex: 526 Link-level type: PPP, MTU: 4474, Clocking: Internal, SONET mode, Speed: OC3, Loopback: None, FCS: 16, Payload scrambler: Enabled Device flags : Present Running Interface flags: Point-To-Point SNMP-Traps Internal: 0x4000 Link flags : Keepalives CoS queues : 4 supported, 4 maximum usable queues Last flapped : 2010-09-14 10:33:25 PDT (1w1d 06:27 ago) Input rate : 0 bps (0 pps) Output rate : 0 bps (0 pps) SONET alarms : None SONET defects : None
El resultado capturado después de ejecutar el script para deshabilitar la interfaz muestra que la interfaz ahora
Administratively down
es .user@host> show interfaces so-0/0/0 Physical interface: so-0/0/0, Administratively down, Physical link is Up Interface index: 128, SNMP ifIndex: 526 Link-level type: PPP, MTU: 4474, Clocking: Internal, SONET mode, Speed: OC3, Loopback: None, FCS: 16, Payload scrambler: Enabled Device flags : Present Running Interface flags: Down Point-To-Point SNMP-Traps Internal: 0x4000 Link flags : Keepalives CoS queues : 4 supported, 4 maximum usable queues Last flapped : 2010-09-14 10:33:25 PDT (1w1d 06:40 ago) Input rate : 0 bps (0 pps) Output rate : 0 bps (0 pps) SONET alarms : None SONET defects : None