Passe-partout requis pour les scripts d’événements
RÉSUMÉ Définissez le modèle standard pour les scripts d’événements.
Les scripts d’événements Junos OS peuvent être écrits en XSLT (Extensible Stylesheet Language Transformations), SAX (Stylesheet Language Alternative, SLAX) ou Python. Les scripts d’événements doivent inclure le modèle standard requis pour ce langage de script, tant pour les fonctionnalités de script de base que pour toutes les fonctionnalités facultatives utilisées dans le script, telles que les fonctions d’extension Junos OS et les modèles nommés. Cette rubrique fournit un modèle standard standard qui peut être utilisé dans les scripts d’événements XSLT, SLAX et Python.
Les scripts d’événements SLAX et XSLT sont basés sur Junos XML et les éléments de balise de protocole Junos XML. Comme tous les éléments XML, les chevrons entourent le nom d’un élément de balise de protocole Junos XML ou Junos XML dans ses balises d’ouverture et de fermeture. Il s’agit d’une convention XML, et les crochets sont une partie obligatoire du nom complet de l’élément de balise. Elles ne doivent pas être confondues avec les chevrons utilisés dans la documentation pour indiquer les parties facultatives des chaînes de commande CLI de Junos OS.
XSLT Boilerplate pour les scripts d’événements
Le scénario standard du script d’événement XSLT est le suivant :
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 ligne 1 est l’instruction de traitement (PI) du langage de balisage extensible (XML). Ce PI spécifie que le code est écrit en XML à l’aide de la version 1.0. Le PI XML, s’il est présent, doit être le premier jeton sans commentaire dans le fichier de script.
1 <?xml version="1.0"?>
La ligne 2 ouvre la feuille de style et spécifie que la version XSLT est 1.0.
2 <xsl:stylesheet version="1.0"
Les lignes 3 à 6 répertorient tous les mappages d’espaces de noms couramment utilisés dans les scripts d’événements. Tous ces préfixes ne sont pas utilisés dans cet exemple, mais répertorier les mappages d’espaces de noms qui ne sont pas référencés n’est pas une erreur. La liste de tous les mappages d’espaces de noms évite les erreurs si les mappages sont utilisés dans des versions ultérieures du 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 ligne 7 est une instruction d’importation XSLT. Il charge les modèles et les variables à partir du fichier référencé en tant que .. /import/junos.xsl, fourni avec Junos OS (dans le fichier /usr/libdata/cscript/import/junos.xsl). Le fichier junos.xsl contient un ensemble de modèles nommés que vous pouvez appeler dans vos scripts. Ces modèles nommés sont abordés dans Présentation des modèles nommés dans les scripts d’automatisation Junos OS.
7 <xsl:import href="../import/junos.xsl"/>
La ligne 8 définit un modèle qui correspond à l’élément </>
. L’élément <xsl:template match="/">
est l’élément racine et représente le niveau supérieur de la hiérarchie XML. Toutes les expressions XPath du script doivent commencer au niveau supérieur. Cela permet au script d’accéder à tous les appels de procédure à distance (RPC) de protocole Junos XML et Junos XML. Pour plus d’informations, consultez Vue d’ensemble de XPath.
8 <xsl:template match="/">
Après l’élément <xsl:template match="/">
de balise, les <event-script-results>
balises et </event-script-results>
container doivent être les balises enfants de niveau supérieur, comme indiqué aux lignes 9 et 10.
9 <event-script-results> <!-- ... insert your code here ... --> 10 </event-script-results>
La ligne 11 ferme le modèle.
11 </xsl:template>
Entre la ligne 11 et la ligne 12, vous pouvez définir des modèles XSLT supplémentaires qui sont appelés à partir <xsl:template match="/">
du modèle.
La ligne 12 ferme la feuille de style et le script d’événement.
12 </xsl:stylesheet>
Passe-partout SLAX pour les scripts d’événements
Le script SLAX op ister est le suivant :
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 pour les scripts d’événements
Les scripts d’événements Python n’ont pas de passe-partout requis, mais ils doivent importer tous les objets utilisés dans le script. Les scripts d’événements Python peuvent importer les éléments suivants :
Junos_Context
dictionary : contient des informations sur l’environnement d’exécution du script.Junos_Trigger_Event
andJunos_Received_Events
objects : contiennent des détails sur les événements qui ont déclenché la stratégie d’événements correspondante.Junos_Remote_Execution_Details
: fonction de générateur requise pour accéder aux détails d’exécution à distance configurés pour un script d’événement au niveau de la[edit event-options event-script file filename remote-execution]
hiérarchie.jcs
library : permet au script d’utiliser les fonctions d’extension Junos OS et la fonctionnalité de modèle nommé Junos OS dans le script.jnpr.junos
module and classes : permet au script d’utiliser Junos PyEZ.
Par exemple:
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__':
Les scripts d’automatisation Python n’ont pas besoin d’inclure une ligne de directive d’interpréteur (#!/usr/bin/env python
) au début du script. Cependant, le programme s’exécutera toujours correctement s’il y en a un.