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-quitcomando 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-namemodo 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 mergede 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
logopción en elcommit-optionspará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/0Compruebe 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_DOWNmensaje 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-namemodo 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 downes .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