Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

例:Op スクリプトを使用したファイルの検索

このサンプルスクリプトは、Junos OSを実行しているデバイス上のファイルを検索し、指定された正規表現に一致する行を検索します。この例では、jcs:grepopスクリプトでテンプレートを使用しています。

要件

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

概要と運用スクリプト

テンプレートは jcs:grep 、正規表現に一致する行を ASCII ファイルで検索します。このテンプレートは 、junos.xsl インポートファイルに存在し、Junos OSを実行しているすべてのスイッチ、ルーター、セキュリティデバイスで利用可能な標準Junos OSインストールに含まれています。テンプレートを jcs:grep スクリプトで使用するには、 junos.xsl ファイルをスクリプトにインポートし、URI http://xml.juniper.net/junos/commit-scripts/1.0 によって識別される名前空間にプレフィックスをマッピング jcs する必要があります。

この例では、テンプレートに必要なすべての値が jcs:grep グローバル パラメーターとして定義されています。パラメーターの値は、コマンドライン引数としてスクリプトに渡されます。以下のスクリプトは、 filename 入力ファイル パスと正規表現の値を格納する 2 つのパラメーターと pattern、 を定義します。スクリプトの実行時にいずれかの引数を省略すると、エラーが生成され、実行が停止されます。それ以外の場合、スクリプトはテンプレートを jcs:grep 呼び出し、指定された引数を渡します。

正規表現に構文エラーが含まれている場合、テンプレートはjcs:grepファイル内のerror: regex error各行にメッセージを生成します。正規表現の構文が有効な場合、テンプレートは入力ファイルを解析します。一致するごとに、テンプレートは<match>、子タグを<output>含む<input>要素を結果ツリーに追加します。テンプレートは、子要素に一致する文字列を<output>書き込み、対応する一致行を子要素に<input>書き込みます。

SLAX スクリプトでは、オペレーターは := テンプレート呼び出しの結果を jcs:grep 一時変数にコピーし、その変数に対して関数を node-set 実行します。演算子は := 、スクリプトがコンテンツに results アクセスできるように、変数が結果ツリー フラグメントではなくノードセットであることを確認します。XSLT スクリプトは、同等の手順を明示的に呼び出します。その後、スクリプトは結果のすべての入力要素をループし、各一致を印刷します。

XSLT 構文

SLAX 構文

構成

手順

手順

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

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

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

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

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

検証

スクリプトの引数の検証

目的

引数の名前と説明が CLI(コマンドライン インターフェイス)のヘルプに表示されていることを確認します。

アクション

動作モード コマンドを op grep ? 発行します。CLI は、スクリプト内のグローバル変数 arguments 内の定義に基づいて、スクリプト引数の補完候補をリストします。

Op スクリプト実行の検証

目的

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

アクション

コマンドを発行しても op grep 、ファイル名または正規表現パターンのいずれかを指定できない場合、スクリプトはエラーメッセージを発行して実行を停止します。例えば:

コマンドを op grep filename filename pattern pattern 発行すると、このスクリプトは、正規表現に一致する入力ファイルからのすべての行を一覧表示します。