イベント ポリシーでイベント スクリプトを実行する
イベント スクリプト は、XSLT(Extensible Stylesheet Language Transformations)スクリプト、Stylesheet Language Alternative syntaX(SLAX)スクリプト、またはイベント ポリシーがトリガーされたときに実行できる Python スクリプトです。イベント スクリプトは、Junos XML または Junos XML プロトコルリモート プロシージャ コール(RPC)を介して利用可能な任意の機能を実行できます。さらに、定義した一連の引数をイベント スクリプトに渡すこともできます。
イベント スクリプトは、運用モード コマンドをビルドして実行し、コマンド出力を受信し、出力を検査して、次の適切なアクションを決定できます。この処理は、問題の原因が特定されるまで繰り返すことができる。その後、スクリプトから問題の原因を CLI で報告したり、デバイス設定を自動的に変更したりできます。
イベント スクリプトを実行し、そのスクリプトの出力を特定の場所にアップロードして分析するイベント ポリシーを構成できます。このようなポリシーを設定するには、 階層レベルで以下のステートメントを [edit event-options]
含めます。
[edit event-options] policy policy-name { events [ events ]; then { event-script filename { arguments { argument-name argument-value; } destination destination-name; output-filename filename; output-format (text | xml); } } }
ステートメントでは、複数の events
イベントを一覧表示できます。リストされている 1 つ以上のイベントが発生した場合、イベント処理は 階層の下で設定されたアクションを then
実行します。イベントポリシーアクションには、 ステートメントを含めて構成された1つ以上のイベントスクリプトの実行を event-script filename
含めることができます。イベント処理は、設定に表示された順序でスクリプトを実行します。ステートメントで event-script
参照するスクリプトは、デバイスのハード ディスクの /var/db/scripts/event ディレクトリ、またはフラッシュ メモリの /config/scripts/event/ ディレクトリに配置する必要があります。さらに、イベント スクリプトは 階層レベルで [edit event-options event-script file]
有効にする必要があります。詳細については、「 Junos 自動化スクリプトの保存と有効化」を参照してください。
スクリプトがフラッシュ メモリ内にある場合は、 階層レベルで ステートメントを load-scripts-from-flash
設定する [edit system scripts]
必要があります。
Junos OS を実行するデバイスで Python 自動化スクリプトを実行する際の要件と制限の詳細については、「 Junos デバイスで Python 自動化スクリプトを実行するための要件」を参照してください。
名前/値の arguments
ペアとして、 ステートメントを設定して、引数をイベントスクリプトに渡すことができます。引数値には、トリガー・イベントやその他の受信イベントに関する情報を含む変数を含めることができます。その後、イベント スクリプトは実行中にこの情報を参照できます。イベント スクリプトに引数を渡す方法の詳細については、 イベント スクリプト に引数を渡すためのイベント ポリシーの構成を参照してください。
イベントスクリプトを設定して、出力をファイルに書き込むことができます。イベント処理がスクリプトを実行すると、 ステートメントで指定された場所にスクリプト出力されたファイルが destination
アップロードされます。ステートメントには、 destination
階層レベルで設定された宛先名を [edit event-options destinations]
含めます。詳細については、「 例: イベントポリシー別ファイルアーカイブの宛先を定義する」を参照してください。
ステートメントで output-filename
、ファイル名に含まれる記述的な文字列を定義します。アップロードされた各ファイルには、ファイル名にホスト名とタイムスタンプも含まれており、各ファイル名が一意であることを確認します。ポリシーが1秒間に複数回トリガーされる場合、ファイル名がまだ一意であることを確認するために、ファイル名にインデックス番号が付加されます。インデックス番号の範囲は001~999です。
Junos OS リリース 14.1R3 以降、イベント スクリプトによって生成されるコマンド出力ファイルの命名規則が変更されました。イベントポリシーがイベントスクリプトを実行し、スクリプトが出力ファイルを生成する場合、ファイル名はデバイスで実行されているJunos OSのバージョンに依存します。Junos OS リリース 14.1R3 より前のファイル名には、以下の命名規則があります。
hostname_output-filename_YYYYMMDD_HHMMSS_index-number
Junos OSリリース14.1R3以降、ファイル名はタイムスタンプの後に output-filename 文字列を配置します。
hostname_YYYYMMDD_HHMMSS_output-filename_index-number
例えば、Junos OSリリース14.1R3以降のリリースを実行しているr1という名前のデバイスでは、 ステートメントをifl-eventsとして設定output-filename
し、このイベントポリシーが1秒に3回トリガーされる場合、ファイル名は次のようになります。
r1_20060623_132333_iflイベント
r1_20060623_132333_ifl-events_001
r1_20060623_132333_ifl-events_002
destination
および output-filename
ステートメントでは、4つの設定シナリオがあります。
および
output-filename
ステートメントをdestination
省略できます。このオプションは、イベント スクリプトに出力がない場合に有効です。例えば、イベント・スクリプトは、出力を持たないコマンドのみをrequest
実行する場合があります。および
output-filename
ステートメントの両方をdestination
含めることができます。設定に ステートメントをoutput-filename
含める場合は、設定に ステートメントもdestination
含める必要があります。この場合、スクリプト出力は出力ファイルにリダイレクトされ、設定で指定された宛先にファイルが送信されます。設定に ステートメントを
destination
含めることができます。設定で ステートメントをoutput-filename
省略し、代わりにイベントスクリプトで出力ファイル名を指定することができます。スクリプト出力は、設定で指定された宛先に送信されます。設定に ステートメントをdestination
含めなかった場合、スクリプト出力はアップロードされません。このシナリオでは、イベント ポリシーはイベント スクリプトからファイル名を抽出します。イベント スクリプトは、 STDOUT として出力ファイル名を書き込みます。イベントスクリプトで使用するXML構文は次のとおりです。
<output> <event-script-output-filename>filename</event-script-output-filename> </output>
要素は
<event-script-output-filename>
、親タグ内の最初の子タグである<output>
必要があります。という名前
device2
のデバイスでは、宛先host
でイベントスクリプトアクションを設定し、 ステートメントをoutput-filename
省略します。宛先を ftp://user@device1//tmp として定義しますhost
。script1.xsl イベント・スクリプトでは、STDOUT に以下の出力を書き込みます。
<event-script-output-filename>/var/cmd.txt</event-script-output-filename>
イベントポリシーを
policy1
以下のように設定します。[edit event-options] policy policy1 { then { event-script script1.xsl { destination host; } } } destinations { host { archive-sites { "ftp://user@device1//tmp" password "$ABC123"; ## SECRET-DATA*** } } }
この例では、 /var/jp.txt ファイルはdevice2にあります。イベントポリシーは、ファイル転送プロトコル(FTP)を使用して、このファイルをデバイス1の /tmp ディレクトリにアップロードします。
イベント ポリシーは、 から
STDOUT
出力ファイル名 /var/jp.txt を読み取ります。次に、イベントポリシーが設定された宛先(device1の/tmpディレクトリ)に/var/jp.txtファイルをアップロードします。イベント ポリシーの名前が /var/_cmd.txt_index-number device2_YYYYMMDDHHMMSS に変更されます。および
output-filename
ステートメントをdestination
含め、イベントスクリプト内で直接出力ファイル名を指定することもできます。これを行うと、設定で指定された出力ファイル名が、イベントスクリプトで指定された出力ファイル名を上書きします。
イベント スクリプト出力のデフォルトの形式と唯一の形式は、Junos XML(Extensible Markup Language)です。
イベントスクリプトの出力は、 階層の下で ステートメントを設定した場合でも、常に output-format text
XML形式で [edit event-options policy policy-name then event-script filename]
出力されます。