Konfigurieren einer Ereignisrichtlinie zum Übergeben von Argumenten an ein Ereignisskript
Wenn eine Ereignisrichtlinie ein Ereignisskript aufruft, kann die Richtlinie Argumente an das Skript übergeben. In den folgenden Abschnitten wird beschrieben, wie Sie die Argumente in der Ereignisrichtlinie konfigurieren und die Argumente im Ereignisskript verwenden:
Konfigurieren von Ereignisskriptargumenten in einer Ereignisrichtlinie
Sie konfigurieren die Argumente, die eine Ereignisrichtlinie an ein Ereignisskript übergibt, innerhalb der then
Klausel der Richtlinie unter der Hierarchie event-script filename arguments
. Sie können eine beliebige Anzahl von Argumenten für jedes aufgerufene Ereignisskript konfigurieren.
[edit event-options policy policy-name then] event-script filename { arguments { argument-name argument-value; } }
Sie fügen Argumente als Name-Wert-Paare in das Skript ein. Die Argumentwerte können Variablen enthalten, die Informationen über das auslösende Ereignis oder andere empfangene Ereignisse enthalten. Das Ereignisskript kann dann während der Ausführung auf diese Informationen verweisen. Sie können Variablen der folgenden Formen verwenden:
{$$.attribute-name}
Das doppelte Dollarzeichen ($$
) stellt das Ereignis dar, das eine Richtlinie auslöst. In Kombination mit einem Attributnamen wird die Variable in den Wert des Attributs aufgelöst, das dem auslösenden Ereignis zugeordnet ist. Wird z. B. in den Schnittstellennamen aufgelöst,{$$.interface-name}
der dem auslösenden Ereignis zugeordnet ist.{$event.attribute-name}
—Das einzelne Dollarzeichen mit der Notation "Ereignisname" ($event
) steht für das letzte Ereignis, das mit übereinstimmtevent
. In Kombination mit einem Attributnamen wird die Variable in den Wert des Attributs aufgelöst, das diesem Ereignis zugeordnet ist. Wird z. B. in den Schnittstellennamen aufgelöst,{$COSD_CHAS_SCHED_MAP_INVALID.interface-name}
der dem letztenCOSD_CHAS_SCHED_MAP_INVALID
Ereignis zugeordnet ist, das vom eventd-Prozess zwischengespeichert wurde.
Für ein bestimmtes Ereignis können Sie eine Liste von Ereignisattributen anzeigen, auf die Sie durch Ausführen des help syslog event
Befehls verweisen können.
user@host> help syslog event
In der folgenden Befehlsausgabe zeigt z. B. Text in spitzen Klammern (< >
) Attribute des COSD_CHASSIS_SCHEDULER_MAP_INVALID
Ereignisses an:
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> ...
Eine andere Möglichkeit, eine Liste von Ereignisattributen anzuzeigen, besteht darin, den set attributes-match event?
Konfigurationsmodusbefehl auf Hierarchieebene [edit event-options policy policy-name]
auszugeben.
[edit event-options policy policy-name] user@host# set attributes-match event?
In der folgenden Befehlsausgabe zeigt die event.attribute
Liste z. B. an, dass und error-message
interface-name
Attribute des cosd_chassis_scheduler_map_invalid
Ereignisses sind:
[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
In diesem set
Befehl befindet sich kein Leerzeichen zwischen dem Ereignisnamen und dem Fragezeichen (?
).
Um eine Liste aller Ereignisattribute anzuzeigen, auf die Sie verweisen können, geben Sie den set attributes-match ?
Befehl Konfigurationsmodus auf der [edit event-options policy policy-name]
Hierarchieebene ein.
[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 ...
Verwenden von Argumenten in einem Ereignisskript
Wenn eine Ereignisrichtlinie ein Ereignisskript aufruft, kann das Ereignisskript auf eines der Argumente verweisen, die von der Richtlinie übergeben werden. Die Namen der Argumente im Ereignisskript müssen mit den Namen der Argumente übereinstimmen, die für dieses Ereignisskript in der [edit event-options policy policy-name then event-scripts filename arguments]
Hierarchie in der Konfiguration konfiguriert sind.
Um die Argumente in einem SLAX- oder XSLT-Ereignisskript zu verwenden, müssen Sie für jedes Argument eine Parameterdeklaration einschließen. Das Ereignisskript weist den Wert für jedes Skriptargument dem entsprechenden gleichnamigen Parameter zu, auf den dann im gesamten Skript verwiesen werden kann.
XSLT-Syntax
<xsl:param name="argument-name"/>
SLAX-Syntax
param $argument-name;
Um die Argumente in einem Python-Ereignisskript zu verwenden, können Sie ein beliebiges gültiges Mittel in der Python-Sprache verwenden. Im folgenden Beispiel wird das Python-Modul argparse
verwendet, um die Skriptargumente zu verarbeiten. Für jedes Argument, das an das Skript übergeben wird, muss eine parser.add_argument
Anweisung eingefügt werden.
Python-Syntax
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()