Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

カスタムの警告、エラー、またはシステムログメッセージをコミットスクリプトで生成する

Junos OS コミット スクリプトは、コミット操作中にカスタムの警告、エラー、またはシステム ログ メッセージを生成し、設定がカスタム設定ルールに準拠していない場合に警告することができます。エラーを生成すると、コミット操作も失敗します。コミットスクリプトでカスタムの警告、エラー、またはシステムログメッセージを生成するには:

  1. コミットスクリプトに必要なボイラープレート」から適切なコミットスクリプトの定型文を含めます。便宜上、ここに再現します。

    XSLT ボイラープレート SLAX 定型文 Python ボイラープレート
  2. コメント "insert your code here" で示されている位置に、1 つ以上の XSLT プログラミング命令、またはそれに相当する SLAX または Python を含めます。一般的に使用される XSLT コンストラクトには、次のものがあります。

    • <xsl:choose> <xsl:when> <xsl:otherwise>- 異なる状況で異なる命令が処理される原因となる条件付きコンストラクト。<xsl:choose> 命令には 1 つ以上の <xsl:when> 要素が含まれており、それぞれが XPath 式をテストします。テストが true と評価された場合、XSLT プロセッサは <xsl:when> 要素内の命令を実行します。XSLT プロセッサは、test属性が true と評価される最初の <xsl:when> 要素に含まれる命令のみを処理します。<xsl:when> 要素の test 属性のいずれも true と評価されない場合、<xsl:otherwise>要素の内容 (存在する場合) が処理されます。

    • <xsl:for-each select="xpath-expression">- 一連のノードを集めて 1 つずつ処理するように XSLT プロセッサに指示するプログラミング命令。ノードは、 select 属性の Extensible Markup Language (XML) Path Language (XPath) 式によって選択されます。各ノードは、 <xsl:for-each> 命令に含まれる命令に従って処理されます。 <xsl:for-each> 命令内のコードは、XPath 式に一致する各ノードに対して再帰的に評価されます。コンテキストは、各パス中にノードに移動されます。

    • <xsl:if test="xpath-expression">- test 属性の XPath 式が trueと評価された場合に命令が処理される条件付きコンストラクト。

      例えば、次のプログラミング命令は、 host-name ステートメントが [edit system] 階層レベルに含まれていない場合に true と評価されます。

      SLAX では、 if コンストラクトは次のようになります。

      Pythonでも同様に:

  3. 警告、エラー、またはシステムログメッセージを生成するための適切なコンストラクトを含めます。

    SLAX スクリプトと XSLT スクリプトでは、 <xnm:warning><xnm:error>、または <syslog> 要素と、メッセージの内容を指定する <message> 子要素を含めます。警告およびエラー メッセージについては、次の例に示すように、 jcs:edit-path テンプレートや jcs:statement テンプレートなど、他のいくつかの子要素を含めることができ、警告またはエラー メッセージに関連する設定階層とステートメント情報が含まれるようになります。

    Python スクリプトでは、 jcs.emit_warning()jcs.emit_error()、または jcs.syslog() 関数を含め、メッセージ文字列を引数リストに含めます。

    たとえば、XSLT コミット スクリプトが次の <xnm:warning> 要素を使用して警告を生成するとします。

    commit操作中に次の出力を出力します。

    同様に、XSLT コミット スクリプトが次の <xnm:error> 要素を使用してエラーを生成する場合も同様です。

    commit操作中に次の出力が出力されます。

    手記:

    SLAX および XSLT スクリプトでは、スクリプトで生成された構成変更と共に警告メッセージを含める場合、jcs:emit-changeテンプレートに message パラメーターを含めることで警告を生成できます。message パラメーターを指定すると、jcs:emit-change テンプレートから <xnm:warning> テンプレートが呼び出され、CLI に警告通知が送信されます。(詳細については、コミットスクリプトを使用した永続的または一時的な設定変更の生成の概要を参照してください)。

    システムログメッセージの場合、サポートされている子要素は <message>のみです。

    含めることができるすべての XSLT タグと属性の説明については、「 メッセージを生成するときに使用する SLAX および XSLT コミット スクリプト タグ要素」を参照してください。

    これらのコンストラクトの SLAX バージョンについては、「 例: カスタム警告メッセージの生成」、「 例: カスタム エラー メッセージの生成」、および「 例: カスタム システム ログ メッセージの生成」を参照してください。

  4. スクリプトをわかりやすい名前で保存します。

  5. スクリプトをハード ディスクの /var/db/scripts/commit ディレクトリまたはフラッシュ ドライブの /config/scripts/commit ディレクトリにコピーします。

    コミット スクリプトの保存場所の設定については、 Junos 自動化スクリプトの保存と有効化 およびフラッシュ メモリへのスクリプトの保存を参照してください。

  6. [edit system scripts commit]階層レベルでfile filenameステートメントを含めて、スクリプトを有効にします。

  7. スクリプトが Python で記述されている場合は、署名されていない Python スクリプトの実行を有効にします。

  8. 設定をコミットします。

    手記:

    デバイスにデュアル ルーティング エンジンがあり、スクリプトをその両方で有効にする場合は、 commit synchronize scripts コマンドを発行して設定を同期させ、コミット操作の一環としてスクリプトをもう一方のルーティングエンジンにコピーできます。