Génération d’un message d’avertissement, d’erreur ou de journal système personnalisé dans les scripts de validation
Les scripts de validation de Junos OS peuvent générer des messages d’avertissement, d’erreur ou de journal système personnalisés lors d’une opération de validation pour vous alerter lorsque la configuration n’est pas conforme aux règles de configuration personnalisées. La génération d’une erreur entraîne également l’échec de l’opération de validation. Pour générer un message d’avertissement, d’erreur ou de journal système personnalisé dans un script de validation :
Incluez le modèle standard de script de validation approprié à partir du modèle standard requis pour les scripts de validation. Il est reproduit ici pour des raisons de commodité :
Passe-partout XSLTPasse-partout<?xml version="1.0" standalone="yes"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:junos="http://xml.juniper.net/junos/*/junos" xmlns:xnm="http://xml.juniper.net/xnm/1.1/xnm" xmlns:jcs="http://xml.juniper.net/junos/commit-scripts/1.0"> <xsl:import href="../import/junos.xsl"/> <xsl:template match="configuration"> <!-- ... insert your code here ... --> </xsl:template> </xsl:stylesheet>
SLAXPython Passe-partoutversion 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 configuration { /* * insert your code here */ }from junos import Junos_Configuration import jcs if __name__ == '__main__': # insert your code here
À la position indiquée par le commentaire « insert your code here, » inclure une ou plusieurs instructions de programmation XSLT ou leurs équivalents SLAX ou Python. Les constructions XSLT couramment utilisées sont les suivantes :
<xsl:choose> <xsl:when> <xsl:otherwise>: construction conditionnelle qui permet de traiter différentes instructions dans différentes circonstances. L’instruction<xsl:choose>contient un ou plusieurs<xsl:when>éléments, chacun d’entre eux testant une expression XPath. Si le test est évalué comme vrai, le processeur XSLT exécute les instructions de l’élément<xsl:when>. Le processeur XSLT ne traite que les instructions contenues dans le premier<xsl:when>élément donttestl’attribut est évalué comme true. Si aucun des attributs des<xsl:when>éléments n’est considéré comme vrai, le contenu de l’élément<xsl:otherwise>, s’iltesty en a un, est traité.<xsl:for-each select="xpath-expression">—Instruction de programmation qui indique au processeur XSLT de rassembler un ensemble de nœuds et de les traiter un par un. Les noeuds sont sélectionnés par l’expression XPath (Extensible Markup Language) XML (Extensible Markup Language) dans l’attributselect. Chacun des nœuds est ensuite traité selon les instructions contenues dans l’instruction<xsl:for-each>. Le code à l’intérieur d’une<xsl:for-each>instruction est évalué récursivement pour chaque nœud qui correspond à l’expression XPath. Le contexte est déplacé vers le nœud à chaque passe.<xsl:if test="xpath-expression">: construction conditionnelle qui entraîne le traitement des instructions si l’expression XPath de l’attributtesta la valeur .truePar exemple, l’instruction de programmation suivante est évaluée comme vraie lorsque l’instruction n’est
host-namepas incluse au niveau de la[edit system]hiérarchie :<xsl:if test="not(system/host-name)">
Dans SLAX, la
ifconstruction ressemble à ceci :if (not(system/host-name))
De même en Python :
if not(Junos_Configuration.xpath("./system/host-name")):
Incluez les constructions appropriées pour générer un message d’avertissement, d’erreur ou de journal système.
Dans les scripts SLAX et XSLT, incluez
<xnm:warning>,<xnm:error>ou<syslog>les éléments avec un<message>élément enfant qui spécifie le contenu du message. Pour les messages d’avertissement et d’erreur, vous pouvez inclure plusieurs autres éléments enfants, tels que lesjcs:edit-pathmodèles etjcs:statement, ce qui permet au message d’avertissement ou d’erreur d’inclure la hiérarchie de configuration et les informations d’instruction appropriées, comme illustré dans les exemples suivants.Dans les scripts Python, incluez
jcs.emit_warning(),jcs.emit_error()oujcs.syslog()des fonctions, et incluez la chaîne de message dans la liste des arguments.Par exemple, lorsqu’un script de validation XSLT génère un avertissement à l’aide de l’élément suivant
<xnm:warning>:<xnm:warning> <xsl:call-template name="jcs:edit-path"> <xsl:with-param name="dot" select="chassis"/> </xsl:call-template> <message>IP source-route processing is not enabled.</message> </xnm:warning>
Il émet la sortie suivante pendant l’opération
commit:[edit chassis] warning: IP source-route processing is not enabled. commit complete
De même, lorsqu’un script de validation XSLT génère une erreur à l’aide de l’élément suivant
<xnm:error>:<xnm:error> <xsl:call-template name="jcs:edit-path"/> <xsl:call-template name="jcs:statement"/> <message>Missing a description for this T1 interface.</message> </xnm:error>
Il émet la sortie suivante pendant l’opération
commit:[edit interfaces interface t1-0/0/0] 'interface t1-0/0/0;' Missing a description for this T1 interface. error: 1 error reported by commit scripts error: commit script failure
Note:Dans les scripts SLAX et XSLT, si vous incluez un message d’avertissement en conjonction avec une modification de configuration générée par un script, vous pouvez générer l’avertissement en incluant le
messageparamètre avec lejcs:emit-changemodèle. Le paramètre message entraîne l’appel<xnm:warning>dujcs:emit-changemodèle, qui envoie une notification d’avertissement à l’interface de ligne de commande. (Pour plus d’informations, reportez-vous à la section Présentation de la génération de modifications de configuration persistantes ou transitoires à l’aide de scripts de validation.)Pour les messages du journal système, le seul élément enfant pris en charge est
<message>:<syslog> <message>syslog-string</message> </syslog>Pour obtenir une description de toutes les balises et attributs XSLT que vous pouvez inclure, consultez Éléments de balise de script de validation SLAX et XSLT à utiliser lors de la génération de messages.
Pour connaître les versions SLAX de ces constructions, reportez-vous à la section Exemple : Générer un message d’avertissement personnalisé, Exemple : Générer un message d’erreur personnalisé et Exemple : Générer un message de journal système personnalisé.
Enregistrez le script avec un nom significatif.
Copiez le script dans le répertoire /var/db/scripts/commit sur le disque dur ou dans le répertoire /config/scripts/commit sur la clé USB.
Pour plus d’informations sur la définition de l’emplacement de stockage des scripts de validation, reportez-vous aux sections Stocker et activer des scripts Junos Automation et Stocker des scripts dans la mémoire flash.
Activez le script en incluant l’instruction
file filenameau niveau de la[edit system scripts commit]hiérarchie.[edit system scripts commit] user@host# set file filename
Si le script est écrit en Python, activez l’exécution de scripts Python non signés.
[edit] user@host# set system scripts language (python | python3)
Validez la configuration.
[edit] user@host# commit and-quit
Note:Si l’appareil dispose de deux moteurs de routage et que vous souhaitez que le script prenne effet sur les deux, vous pouvez exécuter la
commit synchronize scriptscommande pour synchroniser la configuration et copier les scripts dans l’autre moteur de routage dans le cadre de l’opération de validation.