Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

例:Python Op スクリプトを使用した設定の変更

Opスクリプトを使用すると、Junos OS設定に制御された変更を行うことができます。運用スクリプトは、デバイスに関する運用情報を収集し、その情報に基づいて設定を更新できるため、有利です。Junos OS に精通した経験豊富なユーザーは、関連する設定情報を入力する op スクリプトを作成し、それに応じて設定を変更できます。これにより、Junos OSの使用経験が少ないユーザーは、スクリプトを使用して設定を安全に変更できます。この例では、Junos PyEZ API を活用する Python op スクリプト を使用して Junos OS 設定を変更する方法を示します。

要件

この例では、以下のハードウェアとソフトウェアのコンポーネントを使用しています。

  • Python 拡張パッケージを含む Junos OS リリース 16.1R3 以降を実行する MX シリーズ ルーター。

概要と運用スクリプト

Python op スクリプトは、 Junos PyEZ jnpr.junos.utils.config.Config ユーティリティを使用して Junos OS 設定を変更できます。Junos PyEZ Config ユーティリティは、設定のロック、設定データの読み込み、設定への統合方法の指定、設定のコミット、設定のロック解除を行うインスタンスメソッドを提供します。Junos PyEZ を使用して Junos デバイスを設定する方法の詳細については、「 Junos PyEZ を使用して Junos デバイスを設定する」を参照してください。この例の Python op スクリプトは、ローカル デバイスのインターフェイスを無効にするように設定を更新する方法を示しています。

Python op スクリプトは、以下をインポートします。

  • Device クラス —Junos デバイスへの接続を処理します。

  • Config クラス—ターゲット デバイスで設定モード コマンドを実行します。

  • jnpr.junos.exception モジュール — Junos デバイスの管理時に発生した例外が含まれます。

  • jcs module — サポートされている拡張機能をスクリプトで実行できます。

この例では、 usage 変数はスクリプトの関数の一般的な説明で初期化されます。スクリプトを実行すると、スクリプトは CLI で使用の説明を出力し、ユーザーがそのスクリプトの目的を検証できるようにします。

このスクリプトは拡張機能を jcs.get_input() 呼び出します。ユーザーはインターフェイスの名前を無効にするよう求め、インターフェイス名を 変数に interface 格納します。 config_xml この変数は、構成の変更を定義する XML 文字列です。

このスクリプトは、インスタンスの作成時にホスト パラメーターを Device 指定しないため、メソッドが open() ローカル デバイスとの接続を確立します。この例では、 Configmode='exclusive' コンテキストマネージャーを使用して設定の変更中に排他的ロックを取得することでインスタンスを作成します。このモードでは、コンテキスト マネージャーは、候補の構成のロックとロック解除を自動的に処理します。ユーティリティメソッドは Config 、コンフィギュレーション変更を候補コンフィギュレーションにオペレーションとして読み込み load merge 、コンフィギュレーションをコミットします。メソッドは dev.close() 、接続を閉じます。

Python スクリプト

構成

手順

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

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

    メモ:

    符号なしPythonスクリプトは、junos OS super-user ログインクラスのルートまたはユーザーのいずれかが所有する必要があり、ファイルの書き込み権限を持つことができるのはファイル所有者だけです。

  2. 設定モードでは、 階層レベルで file config-change.py ステートメントを [edit system scripts op] 含めます。

  3. デバイスで符号なしPythonスクリプトの実行を有効にします。

    メモ:

    Python 3を language python3 使用してPythonスクリプトを実行するように ステートメントを設定するか、 ステートメントで language python Python 2.7を使用してPythonスクリプトを実行するように設定します。詳細については、 言語を参照してください。

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

  5. スクリプトを実行する前に、運用モード コマンドを show interfaces interface-name 発行し、スクリプトによって無効になるインターフェイスの現在の状態を記録します。

  6. 運用モード コマンドを発行して、op スクリプトを op config-change.py 実行します。

検証

コミットの検証

目的

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

アクション

設定の変更とコミットに関連する警告やエラーをキャッチするコードをスクリプトに含める必要があります。これにより、コミットが成功したかどうかを簡単に判断できます。警告やエラー メッセージがない場合は、いくつかの方法でコミットが成功していることを確認できます。

  • コミット ログを確認して、コミットが成功したことを確認します。

  • syslog メッセージ ファイルを確認して、コミット操作がログに記録されたことを確認します。この場合、無効なインターフェイスの SNMP_TRAP_LINK_DOWN メッセージも表示されます。traceoptions の構成設定によっては、このメッセージがログ ファイルに表示される場合とそうでない場合があります。

設定変更の検証

目的

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

アクション

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

  • この例では、 オペレーショナルモードコマンドを show interfaces interface-name 発行して、インターフェイスが無効であることを確認することもできます。この場合、インターフェイスが無効になる 前に キャプチャされた出力は、 インターフェイスが Enabledであることを示しています。

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