Junos OS 自動化スクリプトで拡張機能を使用する
Junos OS には、コミット、op、イベント、SNMP スクリプトで使用できる拡張機能が用意されており、Junos OS を搭載したデバイス上でスクリプト作業をより簡単に実行できます。次のセクションでは、さまざまなスクリプト言語の拡張関数をインポートして使用する方法について概説します。
SLAX および XSLT スクリプトでの拡張関数の使用
SLAX スクリプトと XSLT スクリプトで拡張関数を使用するには、スクリプトでスタイル シートの宣言で適切な名前空間 Uniform Resource Identifier (URI) を宣言する必要があります。Junos OSを実行しているデバイスに固有の機能を持つJunos OS拡張機能は、関連付けられた URI http://xml.juniper.net/junos/commit-scripts/1.0を持つ名前空間で定義されます。SLAX 拡張関数は、関連付けられた URI http://xml.libslax.org/slaxを持つ名前空間で定義されます。
SLAX スクリプトと XSLT スクリプトは、標準の XSLT 関数やユーザー定義テンプレートとの名前の競合を避けるために、通常、jcs または slax プレフィックスをそれぞれの URI にマップします。次に、スクリプトは拡張関数を適切なプレフィックスで修飾し、処理中に関連する URI 参照に展開します。
たとえば、次の SLAX 名前空間ステートメントは、 jcs プレフィックスを、オートメーション スクリプトで使用されるJunos OS拡張関数を定義する名前空間 URI にマップします。
ns jcs = "http://xml.juniper.net/junos/commit-scripts/1.0";
次の SLAX 名前空間ステートメントは、 slax プレフィックスを SLAX 拡張関数を定義する名前空間 URI にマップします。
ns slax = "http://xml.libslax.org/slax";
SLAX または XSLT スクリプトで拡張関数を呼び出すには、必要な変数宣言を含め、必要に応じて jcs:function-name() または slax:function-name() を使用して関数を呼び出し、必須またはオプションの引数を渡します。引数は、関数定義で指定された正確な順序で関数に渡す必要があります。これは、パラメータが名前で割り当てられ、任意の順序で表示できるテンプレートとは異なります。拡張関数の戻り値は、常に変数に代入するか、出力として指定する必要があります。
次の例では、 jcs プレフィックスを URI http://xml.juniper.net/junos/commit-scripts/1.0によって識別される名前空間にマップします。次に、スクリプトは 1 つの引数を指定して jcs:invoke() 関数を呼び出します。
XSLT 構文
<?xml version=”1.0”?>
<xsl:stylesheet version=”1.0”
xmlns:jcs="http://xml.juniper.net/junos/commit-scripts/1.0">
...
<xsl:variable name="result" select="jcs:invoke('get-software-information')"/>
...
</xsl: stylesheet>
SLAX 構文
version 1.2;
ns jcs = "http://xml.juniper.net/junos/commit-scripts/1.0";
...
var $result = jcs:invoke('get-software-information');
...
次の例では、 slax プレフィックスを URI http://xml.libslax.org/slaxによって識別される名前空間にマップします。次に、スクリプトは 1 つの文字列引数で slax:get-input() 関数を呼び出します。
SLAX 構文
version 1.2;
ns slax = "http://xml.libslax.org/slax";
...
var $input = slax:get-input($prompt);
...
Python スクリプトでの拡張関数の使用
jcs モジュールをインポートする Python 自動化スクリプトでは、サポートされている Junos OS および SLAX 拡張関数の Python バージョンを使用できます。Python スクリプトでサポートされている拡張関数を確認するには、Junos OS 自動化スクリプトの拡張関数についてを参照してください。
Python スクリプトで同等の拡張関数を呼び出すには、まず import jcs ステートメントと必要な変数宣言を含めます。次に、 jcs.function_name()を使用して関数を呼び出し、必須またはオプションの引数を渡します。Python スクリプトでは、拡張関数名にハイフンの代わりにアンダースコアを使用する必要があることに注意してください。例えば:
Python 構文
import jcs
if __name__ == '__main__':
name = jcs.get_input("Enter name: ")
jcs.output(name)