イベント スクリプトに必要な定型プレート
概要 イベント スクリプトの定型プレートを定義します。
Junos OS イベント スクリプトは、XSLT(Extensible Stylesheet Language Transformations)、Stylesheet Language Alternative syntaX(SLAX)、または Python で作成できます。イベント スクリプトには、基本的なスクリプト機能と、Junos OS 拡張機能や名前付きテンプレートなどのスクリプト内で使用されるオプション機能の両方に、そのスクリプト言語に必要な定型文を含める必要があります。このトピックでは、XSLT、SLAX、Python イベント スクリプトで使用できる標準定型プレートを提供します。
SLAX および XSLT イベント スクリプトは、Junos XML および Junos XML プロトコル タグ要素をベースとしています。すべての XML 要素と同様に、山括弧は Junos XML または Junos XML プロトコル タグ要素の名前を開始タグと終了タグで囲みます。これは XML 表記規則であり、角括弧は完全なタグ要素名の必須部分です。これらは、Junos OS CLI コマンド文字列のオプション部分を示すためにドキュメントで使用されている山括弧と混乱することはありません。
イベント スクリプト用 XSLT 定型プレート
XSLT イベント スクリプト定型プレートは次のとおりです。
1 <?xml version="1.0" standalone="yes"?> 2 <xsl:stylesheet version="1.0" 3 xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 4 xmlns:junos="http://xml.juniper.net/junos/*/junos" 5 xmlns:xnm="http://xml.juniper.net/xnm/1.1/xnm" 6 xmlns:jcs="http://xml.juniper.net/junos/commit-scripts/1.0"> 7 <xsl:import href="../import/junos.xsl"/> 8 <xsl:template match="configuration"> 9 <event-script-results> <!-- ... Insert your code here ... --> 10 </event-script-results> 11 </xsl:template> <!-- ... insert additional template definitions here ... --> 12 </xsl:stylesheet>
1行目は、拡張マークアップ言語(XML)処理命令(PI)です。この PI は、コードがバージョン 1.0 を使用して XML で記述されていることを指定します。XML PI(存在する場合)は、スクリプトファイル内の最初のコメント以外のトークンである必要があります。
1 <?xml version="1.0"?>
2 行目はスタイル シートを開き、XSLT バージョンを 1.0 として指定します。
2 <xsl:stylesheet version="1.0"
3~6行目は、イベントスクリプトで一般的に使用されるすべての名前空間マッピングをリストアップしています。この例では、これらのプレフィックスがすべて使用されているわけではありませんが、参照されていない名前空間マッピングの一覧表示はエラーではありません。すべての名前空間マッピングをリストすると、マッピングがスクリプトの新しいバージョンで使用される場合、エラーを防ぐことができます。
3 xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 4 xmlns:junos="http://xml.juniper.net/junos/*/junos" 5 xmlns:xnm="http://xml.juniper.net/xnm/1.1/xnm" 6 xmlns:jcs="http://xml.juniper.net/junos/commit-scripts/1.0">
7 行目は XSLT インポート ステートメントです。これは、 として参照されるファイルからテンプレートと変数を読み込みます 。/import/junos.xsl:Junos OSの一部として出荷されます( ファイル/usr/libdata/cscript/import/junos.xsl内)。 junos.xsl ファイルには、スクリプトで呼び出すことができる名前付きテンプレートのセットが含まれています。これらの名前付きテンプレートについては、 Junos OS 自動化スクリプトの名前付きテンプレートについてで説明します。
7 <xsl:import href="../import/junos.xsl"/>
8 行目は、要素に一致するテンプレートを </>
定義します。 <xsl:template match="/">
要素はルート要素であり、XML 階層の最上位レベルを表します。スクリプト内のすべての XPath 式は、最上位レベルから開始する必要があります。これにより、スクリプトは、すべての可能な Junos XML および Junos XML プロトコルリモート プロシージャ コール(RPC)にアクセスできます。詳細については、 XPath の概要を参照してください。
8 <xsl:template match="/">
タグ要素の <xsl:template match="/">
後、 <event-script-results>
および </event-script-results>
コンテナタグは、行9と10に示すようにトップレベルの子タグである必要があります。
9 <event-script-results> <!-- ... insert your code here ... --> 10 </event-script-results>
11行目はテンプレートを閉じます。
11 </xsl:template>
11 行目と 12 行目の間で、テンプレート内から呼び出される追加の XSLT テンプレートを <xsl:template match="/">
定義できます。
12行目は、スタイルシートとイベントスクリプトを閉じます。
12 </xsl:stylesheet>
イベント スクリプト用 SLAX 定型プレート
対応するSLAX opスクリプト定型プレートは次のとおりです。
version 1.0; ns junos = "http://xml.juniper.net/junos/*/junos"; ns xnm = "http://xml.juniper.net/xnm/1.1/xnm"; ns jcs = "http://xml.juniper.net/junos/commit-scripts/1.0"; import "../import/junos.xsl"; match / { <event-script-results> { /* * Insert your code here */ } }
イベント スクリプト用 Python ボイラープレート
Python イベント スクリプトには必須の定型文はありませんが、スクリプトで使用されているオブジェクトをインポートする必要があります。Python イベント スクリプトは、以下をインポートできます。
Junos_Context
辞書 — スクリプト実行環境に関する情報が含まれます。Junos_Trigger_Event
およびJunos_Received_Events
オブジェクト — 対応するイベント ポリシーをトリガーしたイベントの詳細を含みます。Junos_Remote_Execution_Details
— 階層レベルの[edit event-options event-script file filename remote-execution]
イベント スクリプトに設定されたリモート実行の詳細にアクセスするために必要なジェネレータ機能。jcs
ライブラリ — スクリプトで、Junos OS 拡張機能と Junos OS 名前付きテンプレート機能を使用できるようにします。jnpr.junos
モジュールとクラス — スクリプトで Junos PyEZ を使用できるようにします。
例えば:
from junos import Junos_Context from junos import Junos_Trigger_Event from junos import Junos_Received_Events from junos import Junos_Remote_Execution_Details from jnpr.junos import Device import jcs if __name__ == '__main__':
Python 自動化スクリプトは、スクリプトの先頭にインタープリター指令行(#!/usr/bin/env python
)を含める必要はありません。ただし、プログラムが存在する場合、プログラムは正しく実行されます。