Usar detalles de eventos y ejecución remota en scripts de eventos
Las acciones de política de eventos pueden incluir la ejecución de uno o más scripts de eventos. Cuando una política de eventos ejecuta una secuencia de comandos de evento, el proceso de evento reenvía los detalles del evento a la secuencia de comandos. Estos detalles del evento se pueden capturar, evaluar y enviar a los archivos de registro según sea necesario. Además, todos los detalles de la ejecución remota configurada también se reenvían al script de evento.
Se devuelven dos tipos de detalles de eventos: eventos activados y eventos recibidos. Los eventos activados registran los detalles del evento que activó la política. Los eventos recibidos registran los detalles de los eventos que sucedieron antes del evento de activación. Los detalles del evento de activación siempre se reenvían a los scripts de eventos. Los detalles de eventos recibidos solo están presentes cuando se activa una política de eventos para eventos correlacionados.
Los detalles de ejecución remota, que incluyen el nombre de host, el nombre de usuario y la frase de contraseña de uno o más hosts remotos, permiten que una secuencia de comandos de evento invoque llamadas de procedimiento remoto en hosts remotos sin codificar la información de conexión directamente en la secuencia de comandos de evento. Puede configurar los detalles de la ejecución remota en el [edit event-options event-script file filename remote-execution]
nivel jerárquico. Cuando se incluyen detalles de ejecución remota en la configuración en lugar de en los scripts de eventos individuales, la información se captura en una sola ubicación y la frase de contraseña se cifra. Este no es el caso en un archivo de secuencia de comandos de evento.
Los detalles del evento y los detalles de la ejecución remota se reenvían a scripts de eventos SLAX y XSLT como XML en el siguiente formato:
<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>
Para obtener más información acerca del <junos-context>
elemento, consulte Parámetros y variables globales en scripts de automatización de Junos OS.
Los scripts de eventos de Python deben importar los Junos_Trigger_Event
y Junos_Received_Events
objetos para tener acceso a los detalles del evento de activación y los eventos recibidos. Junos_Trigger_Event
y Junos_Received_Events
son lxml.etree _Element
objetos y contienen la misma jerarquía y nombres de etiqueta que y jerarquías en la <trigger-event>
<received-events>
entrada de script SLAX y XSLT.
Los scripts de eventos de Python pueden extraer los detalles de eventos necesarios de los objetos mediante los métodos lxml, como xpath()
y find()
, findall()
y findtext()
. Por ejemplo:
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
Los scripts de eventos de Python se deben importar Junos_Remote_Execution_Details
para acceder a los detalles de ejecución remota configurados en el [edit event-options event-script file filename remote-execution]
nivel jerárquico. Junos_Remote_Execution_Details
es una función generadora que produce una secuencia de dispositivos remotos, lo que facilita la iteración en varios hosts configurados. Puede hacer referencia al nombre de host, nombre de usuario y frase de contraseña de un host remoto configurado mediante el uso de , host
user
y passwd
las propiedades como en el siguiente código:
from junos import Junos_Remote_Execution_Details for remote in Junos_Remote_Execution_Details(): hostname = remote.host username = remote.user passphrase = remote.passwd