Utiliser les détails d’événement et d’exécution à distance dans les scripts d’événement
Les actions de stratégie d’événement peuvent inclure l’exécution d’un ou plusieurs scripts d’événement. Lorsqu’une stratégie événementielle exécute un script d’événement, le processus événementiel transmet les détails de l’événement au script. Ces détails d’événement peuvent être capturés, évalués et envoyés dans des fichiers journaux selon les besoins. En outre, tous les détails d’exécution à distance configurés sont également transmis au script d’événement.
Deux types de détails d’événement sont renvoyés : les événements déclenchés et les événements reçus. Les événements déclenchés enregistrent les détails de l’événement qui a déclenché la stratégie. Les événements reçus enregistrent les détails des événements qui se sont produits avant l’événement déclencheur. Les détails de l’événement déclencheur sont toujours transmis aux scripts d’événement. Les détails des événements reçus ne sont présents que lorsqu’une stratégie d’événement est déclenchée pour des événements corrélés.
Les détails d’exécution à distance, qui incluent le nom d’hôte, le nom d’utilisateur et la phrase secrète d’un ou de plusieurs hôtes distants, permettent à un script d’événement d’appeler des appels de procédure distante sur des hôtes distants sans coder les informations de connexion directement dans le script d’événement. Vous configurez les détails d’exécution à distance au niveau de la [edit event-options event-script file filename remote-execution]
hiérarchie. Lorsque vous incluez des détails d’exécution à distance dans la configuration plutôt que dans les scripts d’événements individuels, les informations sont capturées dans un emplacement unique et la phrase secrète est chiffrée. Ce n’est pas le cas dans un fichier de script d’événement.
Les détails de l’événement et de l’exécution à distance sont transmis aux scripts d’événement SLAX et XSLT au format XML au format suivant :
<event-script-input> <junos-context> ... </junos-context> <trigger-event> <id>event-id</id> <type>event-type</type> <generation-time>timestamp</generation-time> <process> <name>process-name</name> <pid>pid</pid> </process> <hostname>hostname</hostname> <message>message-string</message> <facility>facility-string</facility> <severity>severity-string</severity> <attribute-list> <attribute> <name>attribute-name</name> <value>attribute-value</value> </attribute> </attribute-list> </trigger-event> <received-events> <received-event> <id>event-id</id> <type>event-type</type> <generation-time>timestamp</generation-time> <process> <name>process-name</name> <pid>pid</pid> </process> <hostname>hostname</hostname> <facility>facility-string</facility> <severity>severity-string</severity> <attribute-list> <attribute> <name>attribute-name</name> <value>attribute-value</value> </attribute> </attribute-list> </received-event> </received-events> <remote-execution-details> <remote-execution-detail> <remote-hostname>hostname</remote-hostname> <username>username</username> <passphrase>passphrase</passphrase> </remote-execution-detail> </remote-execution-details> </event-script-input>
Pour plus d’informations sur l’élément, reportez-vous à la section Paramètres et variables globaux dans les scripts d’automatisation<junos-context>
de Junos OS.
Les scripts d’événements Python doivent importer les objets et pour accéder aux détails de l’événement déclencheur et des événements reçus. et sont des objets et contiennent la même hiérarchie et les mêmes noms de balises que les hiérarchies et et dans les Junos_Trigger_Event
<trigger-event>
entrées de script SLAX et Junos_Received_Events
Junos_Received_Events
<received-events>
XSLT. Junos_Trigger_Event
lxml.etree _Element
Les scripts d’événements Python peuvent extraire les détails d’événement nécessaires des objets à l’aide de méthodes lxml telles que xpath()
et , findall()
et find()
findtext()
. Par exemple :
from junos import Junos_Trigger_Event from junos import Junos_Received_Events id = Junos_Trigger_Event.xpath('//trigger-event/id')[0].text name = Junos_Trigger_Event.xpath('//trigger-event/process/name')[0].text message = Junos_Trigger_Event.xpath('//trigger-event/message')[0].text
Les scripts d’événements Python doivent être importés Junos_Remote_Execution_Details
pour accéder aux détails d’exécution à distance configurés au niveau de la [edit event-options event-script file filename remote-execution]
hiérarchie. est une fonction génératrice qui produit une séquence de périphériques distants, ce qui facilite l’itération sur plusieurs hôtes configurés. Junos_Remote_Execution_Details
Vous pouvez référencer le nom d’hôte, le nom d’utilisateur et la phrase secrète d’un hôte distant configuré à l’aide des host
propriétés , user
et passwd
comme dans le code suivant :
from junos import Junos_Remote_Execution_Details for remote in Junos_Remote_Execution_Details(): hostname = remote.host username = remote.user passphrase = remote.passwd