Usar plantillas con nombre en scripts de automatización de Junos OS
Junos OS proporciona varias plantillas con nombre que se pueden usar en secuencias de comandos de confirmación, operaciones, eventos y SNMP para realizar tareas de scripting con mayor facilidad en dispositivos que ejecutan Junos OS. En las secciones siguientes se describe cómo importar y usar las plantillas para diferentes lenguajes de script:
Uso de plantillas con nombre en scripts SLAX y XSLT
Para utilizar las plantillas con nombre en scripts SLAX y XSLT, el script debe importar el archivo junos.xsl y también declarar el identificador uniforme de recursos (URI) del espacio de nombres adecuado en la declaración de la hoja de estilos. Las plantillas con nombre de Junos OS se definen en el espacio de nombres con el URI http://xml.juniper.net/junos/commit-scripts/1.0
asociado.
Importe el archivo junos.xsl en el script incluyendo el <xsl:import/>
elemento tag en scripts XSLT o la import
instrucción en scripts SLAX y especificando la ubicación del archivo junos.xsl .
Los scripts SLAX y XSLT generalmente asignan el jcs
prefijo al URI para evitar conflictos de nombres con XSLT estándar o plantillas definidas por el usuario. A continuación, los scripts califican las plantillas con nombre con el prefijo adecuado, que se expande a su referencia URI asociada durante el procesamiento. Asigne el jcs
prefijo al URI incluyendo el xmlns:jcs
atributo en el elemento de etiqueta de apertura <xsl:stylesheet>
para scripts XSLT o incluyendo la ns jcs
instrucción en scripts SLAX.
Para llamar a una plantilla con nombre en un script, incluya el <xsl:call-template name="template-name">
elemento en scripts XSLT o la call
instrucción en scripts SLAX y pase los parámetros obligatorios u opcionales. Los parámetros de plantilla se asignan por nombre y pueden aparecer en cualquier orden. Esto difiere de las funciones en las que los argumentos deben pasarse a la función en el orden preciso especificado por la definición de la función.
En el ejemplo siguiente se importa el archivo junos.xsl en una secuencia de comandos y se asigna el jcs
prefijo al espacio de nombres identificado por el http://xml.juniper.net/junos/commit-scripts/1.0 del URI. El script muestra una llamada a la jcs:edit-path
plantilla.
Sintaxis XSLT
<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:jcs="http://xml.juniper.net/junos/commit-scripts/1.0"> <xsl:import href="../import/junos.xsl"/> ... <xsl:for-each select="interfaces/interface[starts-with(name, 'so-')]"> <xnm:warning> <xsl:call-template name="jcs:edit-path"/> <message>interface configured</message> </xnm:warning> </xsl:for-each> ... </xsl: stylesheet>
Sintaxis de SLAX
version 1.2; ns jcs = "http://xml.juniper.net/junos/commit-scripts/1.0"; import "../import/junos.xsl"; ... for-each ( interfaces/interface[starts-with(name,'so-') ) { <xnm:warning> { call jcs:edit-path(); <message> “interface configured”; } } ...
Uso de la funcionalidad de plantilla con nombre en scripts de Python
Los scripts de Python que importan el jcs
módulo pueden ejecutar funciones que son el equivalente en Python de las plantillas con nombre utilizadas en los scripts SLAX y XSLT. Las funciones proporcionan esencialmente la misma funcionalidad en el script de Python que la plantilla con nombre correspondiente en un script SLAX o XSLT. Para determinar qué plantillas con nombre tienen funcionalidad compatible con scripts de Python, consulte Descripción de plantillas con nombre en scripts de automatización de Junos OS.
Para llamar a la función equivalente a una plantilla con nombre dentro de un script de Python, incluya las declaraciones de variables requeridas, llame a la función y pase los argumentos obligatorios u opcionales. Tenga en cuenta que en los scripts de Python, los nombres de las funciones deben usar guiones bajos en lugar de guiones. Por ejemplo:
Sintaxis de Python
import jcs if __name__ == '__main__': script = "system-check.py" change_xml = """<system><scripts><op> <file><name>{0}</name></file></op> </scripts></system>""".format(script) jcs.emit_change(change_xml, "change", "xml")