SUR CETTE PAGE
Exemple : Générer un message de journal système personnalisé
Les scripts de validation de Junos OS peuvent générer des messages 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. Le processus de validation n’est pas affecté par la génération de messages de journal système. Cet exemple crée un script de validation qui génère un message de journal système personnalisé lorsqu’une instruction spécifique n’est pas incluse dans la configuration de l’appareil.
Exigences
Junos OS version 16.1R3 ou ultérieure lors de l’utilisation d’un script Python.
Vue d’ensemble et script de validation
À l’aide d’un script de validation, écrivez un message de journal système personnalisé qui s’affiche lorsque l’instruction n’est read-write
pas incluse au niveau de la [edit snmp community community-name authorization]
hiérarchie.
Le script est affiché en XSLT, SAX et Python.
Syntaxe XSLT
<?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"> <xsl:for-each select="snmp/community"> <xsl:if test="not(authorization) or (authorization != 'read-write')"> <xsl:variable name="community"> <xsl:call-template name="jcs:edit-path"/> </xsl:variable> <xsl:variable name="message" select="concat('SNMP community does not have read-write access: ', $community)"/> <syslog> <message> <xsl:value-of select="$message"/> </message> </syslog> </xsl:if> </xsl:for-each> </xsl:template> </xsl:stylesheet>
Syntaxe 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"; import "../import/junos.xsl"; match configuration { for-each (snmp/community) { if ( not(authorization) or (authorization != "read-write")) { var $community = call jcs:edit-path(); var $message = "SNMP community does not have read-write access: " _ $community; <syslog> { <message> $message; } } } }
Syntaxe Python
from junos import Junos_Configuration import jcs def main(): root = Junos_Configuration for element in root.xpath("./snmp/community"): if element.find("authorization") is None or \ element.find("authorization").text != 'read-write': jcs.syslog("172", "SNMP community does not have read-write access: " + element.find('name').text) if __name__ == '__main__': main()
Configuration
Procédure
Procédure étape par étape
Téléchargez, activez et testez le script. Pour vérifier qu’un script de validation génère correctement un message de journal système, assurez-vous que la configuration candidate contient la condition qui déclenche le message de journal système. Pour cet exemple, assurez-vous que l’instruction n’est read-write
pas incluse au niveau de la [edit snmp community community-name authorization]
hiérarchie.
Pour tester l’exemple de cette rubrique, procédez comme suit :
Copiez le script dans un fichier texte, nommez le fichier read-write.xsl, read-write.slax ou read-write.py selon le cas, puis copiez-le dans le répertoire /var/db/scripts/commit/ de l’équipement.
Note:Les scripts Python non signés doivent appartenir à l’utilisateur root ou à un utilisateur de la classe de connexion Junos OS
super-user
, et seul le propriétaire du fichier peut disposer d’une autorisation d’écriture sur le fichier.En mode configuration, configurez l’instruction
file
et le nom de fichier du script au niveau de la[edit system scripts commit]
hiérarchie.[edit] user@host# set system scripts commit file read-write.xsl
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
Note:Configurez l’instruction
language python3
pour qu’elle utilise Python 3 pour exécuter des scripts Python, ou configurez l’instructionlanguage python
pour qu’elle utilise Python 2.7 pour exécuter des scripts Python. Pour plus d’informations, reportez-vous à la section langue.(Facultatif) Pour tester la condition, si l’instruction
read-write
est incluse au niveau de la[edit snmp community community-name authorization]
hiérarchie pour chaque communauté, supprimez temporairement l’autorisation d’une communauté SNMP existante.[edit] user@host# delete snmp community community-name authorization read-write
Exécutez la commande suivante pour vérifier que la journalisation système est configurée pour écrire dans un fichier (un nom de fichier couramment utilisé est messages) :
[edit] user@host# show system syslog
Pour plus d’informations sur la configuration du journal système, consultez l’Explorateur du journal système.
Exécutez la
commit
commande pour valider la configuration.user@host# commit
Vérification
Vérification de l’exécution d’un script
But
Vérifiez le message du journal système généré par le script de validation.
Les messages du journal système sont générés lors d’une opération de validation pour les scripts Python, SAX et XSLT, mais ils ne sont générés que lors d’une opération de vérification de validation pour les scripts Python. Cela signifie que vous ne pouvez pas utiliser les commit check | display xml
commandes du mode de configuration ou commit check | display detail
pour vérifier la sortie des messages du journal système pour les scripts SLAX et XSLT.
Action
Une fois l’opération de validation terminée, inspectez le fichier journal système. Le répertoire par défaut des fichiers journaux est /var/log/. Affichez le fichier journal en exécutant la show log filename
commande mode opérationnel. Par exemple, si les messages sont consignés dans le fichier de messages , exécutez la commande suivante :
user@host> show log messages | match cscript
Les entrées du journal système générées par les scripts de commit ont le format suivant :
timestamp host-name cscript: message
Étant donné que l’instruction read-write
n’a pas été incluse au niveau de la [edit snmp community community-name authorization]
hiérarchie, le script de validation doit générer le message « La communauté SNMP n’a pas d’accès en lecture-écriture » dans le fichier journal système.
Jun 3 14:34:37 host-name cscript: SNMP community does not have read-write access: [edit snmp community community-name]