イベントスクリプトに必要な定型文
概要 イベントスクリプトの定型文を定義する。
Junos OSイベントスクリプトは、XSLT(Extensible Stylesheet Language Transformations)、SLAX(Stylesheet Language Alternative SyntaX)、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 行目は Extensible Markup Language (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 ステートメントです。テンプレートと変数を として参照されるファイルから読み込みます 。/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="/">
9 行目と 10 行目に示すように、 <xsl:template match="/">
タグ要素の後に、 <event-script-results>
および </event-script-results>
コンテナ タグを最上位の子タグにする必要があります。
9 <event-script-results> <!-- ... insert your code here ... --> 10 </event-script-results>
11 行目でテンプレートを閉じます。
11 </xsl:template>
11 行目と 12 行目の間で、 <xsl:template match="/">
テンプレート内から呼び出される追加の XSLT テンプレートを定義できます。
12 行目で、スタイルシートとイベントスクリプトを閉じます。
12 </xsl:stylesheet>
イベントスクリプトのSLAX定型文
SLAX op スクリプトの定型文は次のとおりです。
version 1.2; 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
dictionary - スクリプト実行環境に関する情報が含まれます。Junos_Trigger_Event
およびJunos_Received_Events
オブジェクト—対応するイベント ポリシーをトリガーしたイベントの詳細が含まれます。Junos_Remote_Execution_Details
-[edit event-options event-script file filename remote-execution]
階層レベルでイベントスクリプトに設定されたリモート実行の詳細にアクセスするために必要なジェネレータ関数。jcs
library—スクリプトで 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
) を含める必要はありません。ただし、存在する場合は、プログラムは引き続き正しく実行されます。