Configuración de una directiva de eventos para pasar argumentos a un script de eventos
Cuando una política de eventos invoca un script de eventos, la política puede pasar argumentos al script. En las secciones siguientes se describe cómo configurar los argumentos de la directiva de eventos y cómo usarlos dentro del script de eventos:
Configuración de argumentos de script de eventos en una directiva de eventos
Los argumentos que una directiva de eventos pasa a una secuencia de comandos de eventos se configuran dentro de la cláusula de la directiva en la then
event-script filename arguments
jerarquía. Puede configurar cualquier número de argumentos para cada script de evento invocado.
[edit event-options policy policy-name then] event-script filename { arguments { argument-name argument-value; } }
Los argumentos de la secuencia de comandos se incluyen como pares nombre/valor. Los valores de argumento pueden incluir variables que contienen información sobre el evento desencadenante u otros eventos recibidos. La secuencia de comandos de eventos puede hacer referencia a esta información durante la ejecución. Puede utilizar variables de las siguientes formas:
{$$.attribute-name}
: la notación del signo de dólar doble ($$
) representa el evento que desencadena una política. Cuando se combina con un nombre de atributo, la variable se resuelve en el valor del atributo asociado al evento desencadenante. Por ejemplo,{$$.interface-name}
se resuelve en el nombre de interfaz asociado al evento desencadenante.{$event.attribute-name}
: el signo de un dólar con la notación del nombre del evento ($event
) representa el evento más reciente que coincide conevent
. Cuando se combina con un nombre de atributo, la variable se resuelve en el valor del atributo asociado a ese evento. Por ejemplo,{$COSD_CHAS_SCHED_MAP_INVALID.interface-name}
se resuelve en el nombre de interfaz asociado con el evento más recienteCOSD_CHAS_SCHED_MAP_INVALID
almacenado en caché por el proceso eventd.
Para un evento determinado, puede ver una lista de atributos de evento a los que puede hacer referencia emitiendo el help syslog event
comando.
user@host> help syslog event
Por ejemplo, en la siguiente salida de comando, el texto entre corchetes angulares (< >
) muestra los atributos del COSD_CHASSIS_SCHEDULER_MAP_INVALID
evento:
user@host> help syslog COSD_CHASSIS_SCHEDULER_MAP_INVALID Name: COSD_CHASSIS_SCHEDULER_MAP_INVALID Message: Chassis scheduler map incorrectly applied to interface <interface-name>: <error-message> ...
Otra forma de ver una lista de atributos de evento es emitir el comando de modo de configuración en el set attributes-match event?
[edit event-options policy policy-name]
nivel de jerarquía.
[edit event-options policy policy-name] user@host# set attributes-match event?
Por ejemplo, en la siguiente salida de comando, la event.attribute
lista muestra que error-message
y interface-name
son atributos del cosd_chassis_scheduler_map_invalid
evento:
[edit event-options policy p1] user@host# set attributes-match cosd_chassis_scheduler_map_invalid? Possible completions: <from-event-attribute> First attribute to compare cosd_chassis_scheduler_map_invalid.error-message cosd_chassis_scheduler_map_invalid.interface-name
En este set
comando, no hay espacio entre el nombre del evento y el signo de interrogación (?
).
Para ver una lista de todos los atributos de evento a los que puede hacer referencia, ejecute el comando de modo de configuración en el set attributes-match ?
nivel de [edit event-options policy policy-name]
jerarquía.
[edit event-options policy policy-name] user@host# set attributes-match ? Possible completions: <from-event-attribute> First attribute to compare acct_accounting_ferror acct_accounting_fopen_error ...
Usar argumentos en un script de eventos
Cuando una política de eventos invoca un script de eventos, el script de eventos puede hacer referencia a cualquiera de los argumentos pasados por la directiva. Los nombres de los argumentos de la secuencia de comandos de eventos deben coincidir con los nombres de los argumentos configurados para esa secuencia de comandos de eventos en la jerarquía de la [edit event-options policy policy-name then event-scripts filename arguments]
configuración.
Para utilizar los argumentos dentro de un script de eventos SLAX o XSLT, debe incluir una declaración de parámetros para cada argumento. La secuencia de comandos de eventos asigna el valor de cada argumento de secuencia de comandos al parámetro correspondiente del mismo nombre, al que se puede hacer referencia en todo el script.
Sintaxis XSLT
<xsl:param name="argument-name"/>
Sintaxis de SLAX
param $argument-name;
Para utilizar los argumentos dentro de un script de eventos de Python, puede utilizar cualquier medio válido en el lenguaje Python. En el ejemplo siguiente se utiliza el módulo Python argparse
para procesar los argumentos del script. Se debe incluir una parser.add_argument
instrucción para cada argumento pasado al script.
Sintaxis de Python
import argparse def main(): parser = argparse.ArgumentParser() parser.add_argument('-argument-name', required=True) args = parser.parse_args() # to use the argument reference args.argument-name if __name__ == '__main__': main()