このページの目次
例: 最小 MTU 設定の適用
最大送信単位 (MTU) は、ネットワーク上の 1 つの物理フレームで転送できる最大データ量またはパケット サイズ (バイト単位 ) です。この例では、コミット スクリプトによって SONET/SDH インターフェイスの MTU をテストします。MTU が指定された最小値より小さい場合、コミット スクリプトはエラーを報告し、コミット操作を失敗させます。
要件
この例では、SONET/SDHインターフェイスを備えたJunos OSを実行するデバイスを使用します。
概要とコミット スクリプト
この例では、SONET/SDHインターフェイスのMTUをテストし、MTUがパラメータの値 min-mtu
(ここでは2048に設定)より小さい場合に報告し、コミット操作を失敗させます。このループは for
、so- で始まり、MTU ステートメントが定義されていて、 の値 min-mtu
より小さいすべての SONET/SDH インターフェイスを選択します。選択されたインターフェイスについて、スクリプトは、設定階層内のインターフェイスの場所とそのインターフェイスに設定された MTU などのエラーを生成します。
スクリプトの例は、XSLT 構文と SLAX 構文の両方で示されています。
XSLT 構文
<?xml version="1.0" standalone="yes"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:junos="http://xml.juniper.net/junos/*/junos" xmlns:xnm="http://xml.juniper.net/xnm/1.1/xnm" xmlns:jcs="http://xml.juniper.net/junos/commit-scripts/1.0"> <xsl:import href="../import/junos.xsl"/> <xsl:param name="min-mtu" select="2048"/> <xsl:template match="configuration"> <xsl:for-each select="interfaces/interface[starts-with(name, 'so-') and mtu and mtu < $min-mtu]"> <xnm:error> <xsl:call-template name="jcs:edit-path"/> <xsl:call-template name="jcs:statement"> <xsl:with-param name="dot" select="mtu"/> </xsl:call-template> <message> <xsl:text>SONET interfaces must have a minimum MTU of </xsl:text> <xsl:value-of select="$min-mtu"/> <xsl:text>.</xsl:text> </message> </xnm:error> </xsl:for-each> </xsl:template> </xsl:stylesheet>
SLAXの構文
version 1.0; ns junos = "http://xml.juniper.net/junos/*/junos"; ns xnm = "http://xml.juniper.net/xnm/1.1/xnm"; ns jcs = "http://xml.juniper.net/junos/commit-scripts/1.0"; import "../import/junos.xsl"; param $min-mtu = 2048; match configuration { for-each (interfaces/interface[starts-with(name, 'so-') and mtu and mtu < $min-mtu]) { <xnm:error> { call jcs:edit-path(); call jcs:statement($dot = mtu); <message> { expr "SONET interfaces must have a minimum MTU of "; expr $min-mtu; expr "."; } } } }
構成
手順
手順
スクリプトをダウンロード、有効化、およびテストするには:
スクリプトをテキストファイルにコピーし、必要に応じてファイルに so-mtu.xsl または so-mtu.slax という名前を付けて、デバイスの /var/db/scripts/commit/ディレクトリ にコピーします。
以下のテスト構成スタンザを選択し、Ctrl+c を押してクリップボードにコピーします。
SLAX バージョンのスクリプトを使用している場合は、階層レベルのファイル名
[edit system scripts commit file]
を so-mtu.slax に変更します。system { scripts { commit { file so-mtu.xsl; } } } interfaces { so-1/2/2 { mtu 2048; } so-1/2/3 { mtu 576; } }
設定モードで、 コマンドを発行
load merge terminal
して、スタンザをデバイス設定にマージします。[edit] user@host# load merge terminal [Type ^D at a new line to end input] ... Paste the contents of the clipboard here ...
プロンプトで、マウスと貼り付けアイコンを使用して、クリップボードの内容を貼り付けます。
実行キーを押します。
Ctrl+dを押します。
設定をコミットします。
user@host# commit
検証
コミット スクリプト出力の検証
目的
スクリプトが期待どおりに動作することを確認します。
アクション
コマンドの出力 commit
を確認します。サンプル設定スタンザでは、2 つの SONET/SDH インターフェイス so-1/2/2 と so-1/2/3 を設定します。so-1/2/3 インターフェイスは 576 の MTU で設定されているため、スクリプトはエラー メッセージを生成し、コミット操作は失敗します。コマンドを発行 commit
すると、次の出力が表示されます。
[edit] user@host# commit [edit interfaces interface so-1/2/3] 'mtu 576;' SONET interfaces must have a minimum MTU of 2048. error: 1 error reported by commit scripts error: commit script failure