Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

例:op スクリプトを使用して show interfaces terse コマンドの出力をカスタマイズする

この例では、 op スクリプト を使用して、 コマンドの出力を show interfaces terse カスタマイズします。XSLT スクリプトの 1 行ごとの説明が提供されます。

要件

この例では、Junos OSを実行しているデバイスを使用しています。

概要と運用スクリプト

デフォルトでは、 コマンドの show interfaces terse レイアウトは次のようになります。

Junos XML では、出力フィールドは次のように表されます。

XSLT 構文

以下のスクリプトは、 コマンドの出力を show interfaces terse カスタマイズします。スクリプトの説明を 1 行ずつ説明します。

回線ごとの説明

1~7行目、20行目、105行目と106行目は、すべてのopスクリプトに含まれる定型です。詳細については、「 Op スクリプトに必要な定型プレート」を参照してください。

8行目から17行目は、 と というarguments変数を宣言しprotocol、スクリプトに対する2つの引数を含みますinterface。この変数宣言により、interfaceprotocolスクリプトの引数としてコマンドライン インターフェイス(CLI)に および が表示されます。

18 行目と 19 行目は、8 行目から 17 行目で作成された引数に対応する 2 つのパラメーターをスクリプトに宣言します。パラメーター名は、引数名と完全に一致する必要があります。

行 20~31 は、 という変数を宣言します rpc。コマンドは show interfaces terse 変数に rpc 割り当てられます。スクリプトの実行時に引数を interface 含めると、引数の値(インターフェイス名)がスクリプトに渡されます。

32 行目は、 という名前outの変数を宣言し、 変数 (show interfaces terse コマンド) の実行にrpc適用します。

33行目では、変更されるコマンドのshow interfaces出力レベルがterse(、 detail、などとは対照的にextensive)であることを指定します。

行 34~39 では、スクリプトの実行時に引数をprotocol含める場合、および指定したプロトコル値が inet、 、 inet6mpls、 または tnp、 の場合、intfそのプロトコル タイプの各インスタンスにテンプレートが適用されていることを指定します。

40~47 行目では、スクリプトの実行時に引数をprotocol含める場合、および指定したプロトコル値が inet、 、 inet6mpls、または tnp、 以外のプロトコル値を生成するかどうかを指定します。

48~52行目では、スクリプトの実行時に引数を protocol 含まない場合、 intf テンプレートが出力内の各論理インターフェイスに適用されていることを指定しています。

53~56行目は終了タグです。

57行目がテンプレートを intf 開きます。このテンプレートは、 コマンドの出力を show interfaces terse カスタマイズします。

58行目は、 と呼ばれる status変数を宣言します。その目的は、インターフェイスステータスの報告方法を指定することです。59~78行目には、 <xsl:choose> 考えられるすべての状態を考慮して変数を status 入力する命令が含まれています。XSLT では常に TRUE と評価される最初 <xsl:when> の命令が実行され、残りの命令は無視されます。各 <xsl:when> インストラクションは、それぞれ別々に説明されています。

60~62行目では、「up」でoper-status「up」の場合admin-status、出力は生成されません。この場合、変数はstatus空のままになります。

63行目から65行目では、もし'down'の場合 admin-status 、変数には status テキストが含まれていることを指定します offline

66~68行目では、物理インターフェイスadmin-statusが「ダウン」の場合oper-status、変数にはstatusテキストp-offlineが含まれています。(../物理インターフェイスを選択します)。

69~71行目では、物理インターフェイスoper-statusが「ダウン」の場合oper-status、変数にはstatusテキストp-downが含まれています。(../物理インターフェイスを選択します)。

72~74行目は、もし'down'の場合 oper-status 、変数に status テキストが含まれていることを指定します down

75~77行目では、テスト・ケースが真でない場合、 status 変数に区切り記号としてスラッシュが含まれ oper-statusadmin-status 連結されていることを指定します。

78行目と79行目は終了タグです。

80~89行目は、 と呼ばれる desc変数を定義します。命令は <xsl:choose> 、利用可能な最も具体的なインターフェイス記述を選択して変数を入力します。論理インターフェイス記述が設定に含まれている場合は、 変数を入力 desc するために使用されます。そうでない場合は、物理インターフェイスの説明が使用されます。設定に物理インターフェイスの説明が含まれていない場合、変数は空のままになります。XSLT では常に TRUE と評価される最初 <xsl:when> の命令が実行され、残りの命令は無視されます。

残りのスクリプトは、動作モード出力の表示方法を指定します。

行90および91では、出力で論理インターフェイス名が最初に表示されていることを指定します。

92~94行目は、変数の desc 文字数が0以外であるかどうかをテストします。文字数がゼロを超える場合、インターフェイス記述はフィールドの標準的な場所に admin-status 表示されます。(標準出力では、 admin-status フィールドは 2 行目に表示されます。

95行目は、 変数で定義されたインターフェイスステータスが status 次に表示されていることを指定します。

行96~103では、スクリプトの実行時に引数を protocol 含めると、そのプロトコルが設定されたインターフェイスのみが表示されるように指定されています。引数を protocol 含まない場合、すべてのインターフェイスが表示されます。

104~106行目は終了タグです。

SLAX 構文

スクリプトの SLAX バージョンは次のとおりです。

構成

手順

手順

スクリプトをダウンロード、有効化、テストするには、以下の手順にしたがっています。

  1. XSLT または SLAX スクリプトをテキスト ファイルにコピーし、必要に応じてファイル interface.xsl または interface.slax に名前を付け、デバイス上の /var/db/scripts/op/ ディレクトリにコピーします。

  2. 設定モードでは、必要に応じて、 file ステートメントを [edit system scripts op] 階層レベルと interface.xsl または interface.slax に含めます。

  3. コマンドを commit and-quit 発行して設定をコミットし、動作モードに戻ります。

  4. 運用モード コマンドを発行して、op スクリプトを op interface 実行します。

検証

コミット スクリプト出力の検証

目的

スクリプトが想定どおりに動作していることを確認します。

アクション

および 操作コマンドをshow interfaces terseop interface発行し、出力を比較します。コマンドはshow interfaces terse、標準出力を表示します。コマンドはop interface、カスタマイズされた出力を表示します。

異なる階層レベルの op interface 操作コマンドを発行し、出力を確認します。例えば: