Plantilla requerida para scripts de eventos
RESUMEN Defina la plantilla para los scripts de eventos.
Los scripts de eventos de Junos OS se pueden escribir en transformaciones de lenguaje de hoja de estilos extensible (XSLT), Stylesheet Language Alternative syntaX (SLAX) o Python. Los scripts de eventos deben incluir la plantilla necesaria para ese lenguaje de script, tanto para la funcionalidad básica de scripts, como para cualquier funcionalidad opcional utilizada en el script, como las funciones de extensión de Junos OS y las plantillas con nombre. En este tema se proporciona un modelo repetitivo estándar que se puede usar en scripts de eventos XSLT, SLAX y Python.
Los scripts de eventos SLAX y XSLT se basan en elementos de etiqueta de protocolo Junos XML y Junos XML. Al igual que todos los elementos XML, los corchetes angulares encierran el nombre de un elemento de etiqueta de protocolo Junos XML o Junos XML en sus etiquetas de apertura y cierre. Se trata de una convención XML y los corchetes son una parte obligatoria del nombre completo del elemento de etiqueta. No deben confundirse con los corchetes angulares utilizados en la documentación para indicar partes opcionales de las cadenas de comandos de la CLI de Junos OS.
Plantilla XSLT para scripts de eventos
La plantilla de script de eventos XSLT es la siguiente:
1 <?xml version="1.0" standalone="yes"?> 2 <xsl:stylesheet version="1.0" 3 xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 4 xmlns:junos="http://xml.juniper.net/junos/*/junos" 5 xmlns:xnm="http://xml.juniper.net/xnm/1.1/xnm" 6 xmlns:jcs="http://xml.juniper.net/junos/commit-scripts/1.0"> 7 <xsl:import href="../import/junos.xsl"/> 8 <xsl:template match="configuration"> 9 <event-script-results> <!-- ... Insert your code here ... --> 10 </event-script-results> 11 </xsl:template> <!-- ... insert additional template definitions here ... --> 12 </xsl:stylesheet>
La línea 1 es la instrucción de procesamiento (PI) del lenguaje de marcado extensible (XML). Este PI especifica que el código se escribe en XML utilizando la versión 1.0. El IP XML, si está presente, debe ser el primer token sin comentarios en el archivo de script.
1 <?xml version="1.0"?>
La línea 2 abre la hoja de estilos y especifica la versión XSLT como 1.0.
2 <xsl:stylesheet version="1.0"
En las líneas 3 a 6 se enumeran todas las asignaciones de espacio de nombres que se usan habitualmente en los scripts de eventos. No todos estos prefijos se usan en este ejemplo, pero no es un error enumerar asignaciones de espacio de nombres a las que no se hace referencia. Enumerar todas las asignaciones de espacio de nombres evita errores si las asignaciones se usan en versiones posteriores del script.
3 xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 4 xmlns:junos="http://xml.juniper.net/junos/*/junos" 5 xmlns:xnm="http://xml.juniper.net/xnm/1.1/xnm" 6 xmlns:jcs="http://xml.juniper.net/junos/commit-scripts/1.0">
La línea 7 es una instrucción de importación XSLT. Carga las plantillas y variables del archivo al que se hace referencia como .. /import/junos.xsl, que se incluye como parte de Junos OS (en el archivo /usr/libdata/cscript/import/junos.xsl). El archivo junos.xsl contiene un conjunto de plantillas con nombre a las que puede llamar en los scripts. Estas plantillas con nombre se describen en Descripción de las plantillas con nombre en scripts de automatización de Junos OS.
7 <xsl:import href="../import/junos.xsl"/>
La línea 8 define una plantilla que coincide con el </>
elemento. El <xsl:template match="/">
elemento es el elemento raíz y representa el nivel superior de la jerarquía XML. Todas las expresiones XPath del script deben comenzar en el nivel superior. Esto permite que la secuencia de comandos acceda a todas las posibles llamadas a procedimiento remoto (RPC) de protocolo Junos XML y Junos XML. Para obtener más información, vea Información general sobre XPath.
8 <xsl:template match="/">
Después del elemento tag <xsl:template match="/">
, las <event-script-results>
etiquetas contenedor y </event-script-results>
deben ser las etiquetas secundarias de nivel superior, como se muestra en las líneas 9 y 10.
9 <event-script-results> <!-- ... insert your code here ... --> 10 </event-script-results>
La línea 11 cierra la plantilla.
11 </xsl:template>
Entre la línea 11 y la línea 12, puede definir plantillas XSLT adicionales a las que se llama desde dentro de la <xsl:template match="/">
plantilla.
La línea 12 cierra la hoja de estilos y el script del evento.
12 </xsl:stylesheet>
Plantilla SLAX para guiones de eventos
La plantilla de script op de SLAX es la siguiente:
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"; import "../import/junos.xsl"; match / { <event-script-results> { /* * Insert your code here */ } }
Python Boilerplate para scripts de eventos
Los scripts de eventos de Python no tienen una plantilla requerida, pero deben importar cualquier objeto que se use en el script. Los scripts de eventos de Python pueden importar lo siguiente:
Junos_Context
diccionario: contiene información sobre el entorno de ejecución de scripts.Junos_Trigger_Event
yJunos_Received_Events
objetos: contienen detalles sobre los eventos que desencadenaron la directiva de eventos correspondiente.Junos_Remote_Execution_Details
: función generadora necesaria para acceder a los detalles de ejecución remota configurados para un script de eventos en el nivel jerárquico[edit event-options event-script file filename remote-execution]
.jcs
Biblioteca: permite que la secuencia de comandos utilice las funciones de extensión de Junos OS y la funcionalidad de plantilla con nombre de Junos OS en la secuencia de comandos.jnpr.junos
módulo y clases: permite que el script utilice Junos PyEZ.
Por ejemplo:
from junos import Junos_Context from junos import Junos_Trigger_Event from junos import Junos_Received_Events from junos import Junos_Remote_Execution_Details from jnpr.junos import Device import jcs if __name__ == '__main__':
Los scripts de automatización de Python no necesitan incluir una línea de directiva de intérprete (#!/usr/bin/env python
) al principio del script. Sin embargo, el programa seguirá ejecutándose correctamente si hay uno presente.