サービスの改善にご協力お願いします。

お客様のご意見をお聞かせください。

アンケートの所要時間はおよそ 2 分です。

close
keyboard_arrow_left
list Table of Contents
keyboard_arrow_right

この機械翻訳はお役に立ちましたでしょうか?

starstarstarstarstar
Go to English page
免責事項:

このページは、サードパーティー製機械翻訳ソフトウェアを使用して翻訳されます。質の高い翻訳を提供するために合理的な対応はされていますが、ジュニパーネットワークスがその正確性を保証することはできかねます。この翻訳に含まれる情報の正確性について疑問が生じた場合は、英語版を参照してください. ダウンロード可能なPDF (英語版のみ).

例: SLAX および XSLT Op スクリプトを使用した構成の変更

date_range 19-Nov-24

この例では、SLAX op スクリプトを使用して Junos OS 設定に構造化された変更を加える方法を説明します。

デバイス構成

手順

スクリプトをダウンロード、有効化、およびテストするには、次のようにします。

  1. スクリプトをテキストファイルにコピーし、 config-change.slaxという名前を付けて、デバイスの /var/db/scripts/op/ディレクトリ にコピーします。

  2. 設定モードで、 [edit system scripts op file] 階層レベルでスクリプトのファイル名を設定します。

    content_copy zoom_out_map
    [edit system scripts op]
    user@host# set file config-change.slax
    
  3. commit and-quit コマンドを発行して設定をコミットし、動作モードに戻ります。

    content_copy zoom_out_map
    [edit]
    user@host# commit and-quit
    
  4. スクリプトを実行する前に、 show interfaces interface-name 運用モードコマンドを発行し、スクリプトによって無効になるインターフェイスの現在の状態を記録します。

  5. op スクリプトを実行します。

    content_copy zoom_out_map
    user@host> op config-change
    This script disables the interface specified by the user. The script modifies the candidate configuration to disable the interface and commits the configuration to activate it.
    Enter interface to disable: so-0/0/0
    

必要条件

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

概要と Op スクリプト

SLAX および XSLT op スクリプトは、junos.xsl インポート ファイルにある jcs:load-configuration テンプレートを使用して、Junos OS設定に構造化された変更を加えることができます。この例では、jcs:load-configuration テンプレートを使用して Junos OS を実行しているデバイスのインターフェイスを無効にする SLAX op スクリプトを作成します。jcs:load-configurationテンプレートに必要な値はすべて変数として定義され、テンプレートに渡されます。

この例では、 usage 変数は、スクリプトの関数の一般的な説明で初期化されます。スクリプトを実行すると、 jcs:output() 関数が呼び出され、使用法の説明が CLI に出力されます。これにより、スクリプトを正しい目的で使用していることを確認できます。

スクリプトは jcs:get-input() 関数を呼び出し、無効にするインターフェイスの名前の入力を求め、インターフェイス名を interface 変数に格納します。 config-changes 変数は、デバイスにロードするJunos XML設定データを格納し、 interface 変数を参照します。 jcs:load-configuration テンプレート呼び出しは、 configuration パラメーターの値を、 config-changes 変数に格納されているデータに設定します。

load-action変数は merge に設定され、新しいコンフィギュレーション・データが候補コンフィギュレーションにマージされます。これは、CLI コンフィギュレーション モードのコマンド load mergeに相当します。

options変数は、コミット操作のオプションを定義します。:= 演算子を使用してノード セットを作成し、それを commit-options パラメータの値としてテンプレートに渡します。この例では、後で参照できるようにコミットの説明をコミットログに追加するための log タグが含まれています。

jcs:open() 関数を呼び出すと、ローカル デバイス上のJunos OS管理プロセス (mgd) との接続が開き、conn変数に格納されている接続ハンドルが返されます。その後、スクリプトは jcs:load-configuration テンプレートを呼び出します。

:= 演算子は、jcs:load-configuration テンプレート呼び出しの結果を一時変数にコピーし、その変数に対して node-set 関数を実行します。結果のノードセットは、results変数に格納されます。:= 演算子は、スクリプトがコンテンツにアクセスできるように、results変数が結果ツリーのフラグメントではなくノードセットであることを保証します。

jcs:close()機能は、デバイスへの接続を閉じます。デフォルトでは、jcs:load-configurationテンプレートはCLIにメッセージを出力しません。この例では、レスポンスで xmn:warning メッセージと xnm:error メッセージを検索して出力し、コミットに関する問題を迅速に特定します。

SLAX 構文

content_copy zoom_out_map
version 1.2;

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";
ns ext = "http://xmlsoft.org/XSLT/namespace";

import "../import/junos.xsl";

match / {
<op-script-results> {

    var $usage = "This script disables the specified interface." _
            "The script modifies the candidate configuration to disable " _
            "the interface and commits the configuration to activate it.";
    var $temp = jcs:output($usage);

    var $interface = jcs:get-input("Enter interface to disable: ");

    var $config-changes = {
        <configuration> {
            <interfaces> {
                <interface> {
                    <name> $interface;
                    <disable>;
                }
            }
        }
    }

    var $load-action = "merge";

    var $options := {
       <commit-options> {
           <log> "disabling interface " _ $interface;
        }
    }

    var $conn = jcs:open();

    var $results := { 
      call jcs:load-configuration( $action=$load-action, 
             $commit-options=$options, 
             $configuration=$config-changes, $connection=$conn); 
    }

    var $close-results = jcs:close($conn);

    if ($results//xnm:error) {
        for-each ($results//xnm:error) {
            <output> message;
        }
    }
    if ($results//xnm:warning) {
        for-each ($results//xnm:warning) {
            <output> message;
        }
    }

}
}

検証

コミットの検証

目的

コミットが成功したことを確認します。

アクション

スクリプトには、 jcs:load-configuration テンプレートから返されたノード セットを解析してエラーや警告がないか調べるコードを含める必要があります。これにより、コミットが成功したかどうかをより簡単に判断できます。警告メッセージやエラーメッセージが表示されない場合は、いくつかの方法でコミットが成功したことを確認できます。

  • コミットログをチェックして、コミットが成功したことを確認します。commit-options パラメーターに log オプションを含めると、メッセージはコミット情報とともにコミット ログに表示されます。

    content_copy zoom_out_map
    user@host> show system commit
    0   2010-09-22 17:08:17 PDT by user via junoscript
        disabling interface so-0/0/0
  • syslog メッセージ ファイルをチェックして、コミット操作がログに記録されていることを確認します。この場合、無効なインターフェイスso-0/0/0の SNMP_TRAP_LINK_DOWN メッセージも表示されます。traceoptionsの構成設定によっては、このメッセージがログファイルに表示される場合と表示されない場合があります。

    content_copy zoom_out_map
    user@host> show log messages | last
    Sep 22 17:08:13  host file[7319]: UI_COMMIT: User 'user' requested 'commit' operation (comment: disabling interface so-0/0/0)
    Sep 22 17:08:16  host mib2d[1434]: SNMP_TRAP_LINK_DOWN: ifIndex 526, ifAdminStatus down(2), ifOperStatus down(2), ifName so-0/0/0
    

設定変更の確認

目的

正しい変更が設定に統合されていることを確認します。

アクション

  • 設定を表示し、指定されたインターフェイスで変更が表示されることを確認します。

    content_copy zoom_out_map
    user@host> show configuration interfaces so-0/0/0
    disable;
  • この例では、 show interfaces interface-name 運用モードコマンドを発行して、インターフェイスが無効になっていることを確認することもできます。この場合、インターフェイスが無効になる 前に キャプチャされた出力は、インターフェイスが Enabledであることを示しています。

    content_copy zoom_out_map
    user@host> show interfaces so-0/0/0
    Physical interface: so-0/0/0, Enabled, Physical link is Up
      Interface index: 128, SNMP ifIndex: 526
      Link-level type: PPP, MTU: 4474, Clocking: Internal, SONET mode, Speed: OC3, Loopback: None, FCS: 16,
      Payload scrambler: Enabled
      Device flags   : Present Running
      Interface flags: Point-To-Point SNMP-Traps Internal: 0x4000
      Link flags     : Keepalives
      CoS queues     : 4 supported, 4 maximum usable queues
      Last flapped   : 2010-09-14 10:33:25 PDT (1w1d 06:27 ago)
      Input rate     : 0 bps (0 pps)
      Output rate    : 0 bps (0 pps)
      SONET alarms   : None
      SONET defects  : None
    

    スクリプトを実行してインターフェイスを無効にし た後 にキャプチャされた出力は、インターフェイスが Administratively downになったことを示しています。

    content_copy zoom_out_map
    user@host> show interfaces so-0/0/0
    Physical interface: so-0/0/0, Administratively down, Physical link is Up
      Interface index: 128, SNMP ifIndex: 526
      Link-level type: PPP, MTU: 4474, Clocking: Internal, SONET mode, Speed: OC3, Loopback: None, FCS: 16,
      Payload scrambler: Enabled
      Device flags   : Present Running
      Interface flags: Down Point-To-Point SNMP-Traps Internal: 0x4000
      Link flags     : Keepalives
      CoS queues     : 4 supported, 4 maximum usable queues
      Last flapped   : 2010-09-14 10:33:25 PDT (1w1d 06:40 ago)
      Input rate     : 0 bps (0 pps)
      Output rate    : 0 bps (0 pps)
      SONET alarms   : None
      SONET defects  : None
    
external-footer-nav