Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

コミットスクリプトのトラブルシューティング

コミットスクリプトを有効にし、 commit コマンドを発行すると、コミットスクリプトは直ちに有効になります。

表 1 に、発生する可能性のある一般的な問題をいくつか説明しています。

表1:コミットスクリプトのトラブルシューティング

問題点

ソリューション

commit check | display detailコマンドの出力が、予期されるコミットスクリプトを参照していません。

[edit system scripts commit]階層レベルで各スクリプトのfileステートメントを含めて、すべてのスクリプトを有効にしていることを確認します。

出力には、以下のエラーメッセージが含まれています。

error: could not open commit script: 
/var/db/scripts/commit/filename:
No such file or directory

コミットスクリプトがJunosデバイスの /var/db/scripts/commit/ ディレクトリに存在することを確認します。

以下のエラーメッセージと警告メッセージが表示されます。

error: invalid transient change 
generated by commit script: filename 
 warning: 1 transient change was generated 
without [system scripts commit allow-transients]

コミットスクリプトの1つに、 一時的な変更を生成するための指示が含まれていますが、一時的な変更を有効にしていません。

この問題を解決するには、次のいずれかのアクションを実行します。

  • [edit system scripts commit]または[edit system scripts commit file filename]階層レベルでallow-transientsステートメントを含めます。

  • 示されたスクリプトから一時的な変更を生成するコードを削除します。

  • 設定でスクリプトを無効にします。

予期されたアクションは発生しません。

例えば、警告メッセージを呼び起こすはずの問題が設定に含まれていても、警告メッセージが表示されません。

  • スクリプトが有効になっていることを確認してください。スクリプトが有効になっていない場合は無視されます。

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

  • スクリプト内の XPath 式に、Junos XMLプロトコルタグ要素として表現された有効な設定ステートメントが含まれていることを確認します。

    show configuration | display xml動作モードコマンドを発行することで、XML階層を検証できます。

  • スクリプト内のプログラミング命令が正しい コンテキストノードを参照していることを確認します。

    ある命令を別の命令の中にネストすると、外側の命令によってコンテキストノードが変更されるため、内側の命令は外側の命令に対して相対的でなければなりません。

    たとえば、 <xsl:for-each> 命令には、コンテキストノードを変更するXPath式が含まれています。そのため、ネストされた <xsl:if> 命令では、 interfaces/interface[starts-with(name, 't1-')] XPath 式から相対的な XPath 式を使用します。

    <xsl:for-each select="interfaces/
         interface[starts-with(name, 't1-')]">
    <xsl:if test="not(description)">

コミット操作が失敗し、システムログファイルに次のエラーメッセージが表示されます。

Process (pid,cscript) attempted to exceed RLIMIT_DATA

1 つ以上のコミットスクリプトによって検査される設定をコミットする場合、大規模な設定の処理に対応するために、コミットスクリプトに割り当てられるメモリの量を増やす必要がある場合があります。

実行される各コミットスクリプトに割り当てられる最大メモリを増やすには、設定をコミットする前に、[edit system scripts commit]階層レベルで適切なメモリ制限(バイト単位)でmax-datasize sizeステートメントを設定します。