イベント スクリプトに引数を渡すイベント ポリシーの設定
イベント ポリシーがイベント スクリプトを呼び出すと、ポリシーは引数をスクリプトに渡すことができます。以下のセクションでは、イベント ポリシーで引数を構成し、イベント スクリプト内で引数を使用する方法について概要を説明します。
イベント ポリシーでのイベント スクリプトの引数の設定
イベント ポリシーが イベント スクリプトに渡す引数は、 階層下event-script filename arguments
のポリシーの句でthen
設定します。呼び出された各イベント・スクリプトに対して、引数をいくつでも設定することができます。
[edit event-options policy policy-name then] event-script filename { arguments { argument-name argument-value; } }
名前と値のペアとしてスクリプトに引数を含めます。引数値には、トリガー・イベントやその他の受信イベントに関する情報を含む変数を含めることができます。その後、イベント スクリプトは実行中にこの情報を参照できます。以下の形式の変数を使用できます。
{$$.attribute-name}
—二重ドル記号($$
)表記は、ポリシーをトリガーするイベントを表します。属性名と組み合わせると、変数はトリガー・イベントに関連する属性の値に解決されます。例えば、{$$.interface-name}
トリガー・イベントに関連付けられたインターフェース名に解決します。{$event.attribute-name}
— イベント名($event
)表記の単一ドル記号は、一致する最新のイベントを表していますevent
。属性名と組み合わせると、変数はそのイベントに関連する属性の値に解決されます。例えば、{$COSD_CHAS_SCHED_MAP_INVALID.interface-name}
イベント・プロセスによってキャッシュされた最新COSD_CHAS_SCHED_MAP_INVALID
のイベントに関連付けられたインターフェース名に解決します。
特定のイベントに対して、 コマンドを発行することで参照できるイベント属性のリストを help syslog event
表示できます。
user@host> help syslog event
例えば、以下のコマンド出力では、山括弧(< >
)のテキストはイベントの属性を COSD_CHASSIS_SCHEDULER_MAP_INVALID
示しています。
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> ...
イベント属性のリストを表示するもう1つの方法は、 階層レベルで 設定モードコマンドを[edit event-options policy policy-name]
発行set attributes-match event?
することです。
[edit event-options policy policy-name] user@host# set attributes-match event?
例えば、以下のコマンド出力では、 event.attribute
リストは、 および interface-name
がイベントのcosd_chassis_scheduler_map_invalid
属性であることをerror-message
示しています。
[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
この set
コマンドでは,イベント名と疑問符(?
)の間にスペースはありません。
参照できるすべてのイベント属性のリストを表示するには、 階層レベルで 設定モード コマンドを[edit event-options policy policy-name]
発行set attributes-match ?
します。
[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 ...
イベント スクリプトでの引数の使用
イベント ポリシーがイベント スクリプトを呼び出すと、イベント スクリプトはポリシーによって渡された引数のいずれかを参照できます。イベント スクリプトの引数の名前は、構成内の 階層にある [edit event-options policy policy-name then event-scripts filename arguments]
イベント スクリプトに設定された引数の名前と一致する必要があります。
SLAX または XSLT イベント スクリプト内の引数を使用するには、各引数にパラメーター宣言を含める必要があります。イベント スクリプトは、各スクリプト引数の値を同じ名前の対応するパラメーターに割り当てます。このパラメーターは、スクリプト全体で参照できます。
XSLT 構文
<xsl:param name="argument-name"/>
SLAX 構文
param $argument-name;
Python イベント スクリプト内の引数を使用するには、Python 言語で任意の有効な手段を使用できます。次の例では、Python argparse
モジュールを使用してスクリプトの引数を処理します。ステートメントは parser.add_argument
、スクリプトに渡される各引数に含める必要があります。
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()