Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Junos PyEZ を使用して Junos デバイスからファクトを取得する

Junos PyEZ デバイスの事実を理解する

Junos PyEZ は、Junos デバイスの管理と自動化を可能にする Python 向けのマイクロフレームワークです。Junos PyEZ は、各デバイスをクラスの jnpr.junos.device.Device インスタンスとしてモデル化します。Junos デバイスに接続した後、Junos PyEZ アプリケーションはデバイスに関するファクトを取得できます。デバイスファクトは、オブジェクトのfactsDevice属性としてアクセスされます。返品されたデバイスファクトに含まれるキーの詳細については、jnpr.junos.factsを参照してください。

次の例では、デバイスとSSHを介してNETCONFセッションを確立し、デバイスのファクトを印刷します。デバイスはSSHキーを使用してユーザーを認証します。

Junos PyEZ リリース 2.0.0 以前のリリースでは、アプリケーションがデバイスへの接続方法を呼び出すとDeviceopen()、Junos PyEZ は NETCONF-over-SSH 接続のデバイス ファクトを自動的に収集し、引数リストに明示的に含gather_facts=Trueめると Telnet およびシリアル コンソール接続のデバイス ファクトをDevice収集します。

Junos PyEZ リリース 2.1.0 以降、デバイスのファクトは、すべての接続タイプに対してオンデマンドで収集されます。各ファクトは、アプリケーションがその値または依存ファクトの値に初めてアクセスする際に収集され、キャッシュされます。デバイスファクトを印刷または使用する場合、以前にアクセスしたファクトはキャッシュから提供され、まだアクセスされていないファクトはデバイスから取得されます。特定のプラットフォームでファクトがサポートされていない場合、またはアプリケーションで特定の事実の価値を収集する問題が発生した場合、その事実の価値は None.

Junos PyEZは、デバイスのファクトまたは依存ファクトに初めてアクセスしたときにデバイスのファクトをキャッシュしますが、後続のアクセス時にキャッシュされた値は更新されません。デバイスファクトを更新するには、メソッドを facts_refresh() 呼び出します。メソッドは facts_refresh() 、アプリケーションの次にファクトにアクセスするときにデバイスからそれを取得し、キャッシュに現在の値を格納するように、すべてのファクトのキャッシュを空にします。

1 つのファクトまたはファクトのセットのみを更新するには、メソッドに引数をkeysfacts_refresh()含め、キャッシュからクリアするキーを指定します。例えば:

メモ:

Junos PyEZ リリース 2.0.0 以降、ファクトを収集する際に発生する例外は、エラーではなく警告を発生させ、スクリプトの実行を継続できるようにします。

デフォルトでは、Junos PyEZ はデバイス ファクトを辞書のようなオブジェクトとして返します。Junos PyEZ リリース 2.2.1 以降、デバイスのファクトは JSON(JavaScript Object Notation)で確認できます。ファクトの JSON 表現を表示するには、モジュールを json インポートして関数を json.dumps() 呼び出します。

例:Junos デバイスからファクトを取得する

Junos PyEZ を使用すると、Python インタラクティブ モードでコマンドを迅速に実行したり、タスクを実行するプログラムを作成したりできます。次の例では、Junosデバイスを使用してSSH上でNETCONFセッションを確立し、単純なPythonプログラムとPythonインタラクティブモードの両方を使用して、デバイスのファクトを取得して印刷します。この例では、認証に既存のSSHキーを使用しています。

JunosデバイスとのSSH経由でNETCONFセッションを確立し、デバイスのファクトを印刷するJunos PyEZアプリケーションを作成するには、次の手順に従います。

  1. お気に入りのエディタで、 .py ファイル拡張子を使用する説明的な名前の新しいファイルを作成します。
  2. クラスと、タスクに Device 必要なその他のモジュールまたはオブジェクトをインポートします。
  3. デバイスインスタンスを作成し、ホスト名、認証に必要なパラメーター、オプションのパラメーターを指定します。
  4. メソッドを呼び出してデバイスに接続します open()
  5. デバイスのファクトを印刷します。
    ヒント:

    デバイスのファクトを更新するには、次のようにdev.facts_refresh()メソッドをfacts_refresh()呼び出します。

  6. デバイスへの接続を閉じます。
  7. プログラムを保存して実行します。

プログラム全体を以下に示します。

Python インタラクティブ モードで同じ操作を迅速に実行することもできます。

次のビデオでは、Junos PyEZ を使用して Junos デバイスに接続し、Junos デバイスからファクトを取得する方法を示す短い Python セッションを紹介します。

リリース履歴テーブル
リリース
説明
2.1.0
Junos PyEZ リリース 2.1.0 以降、デバイスのファクトは、すべての接続タイプに対してオンデマンドで収集されます。
2.0.0
Junos PyEZ リリース 2.0.0 以降、ファクトを収集する際に発生する例外は、エラーではなく警告を発生させ、スクリプトの実行を継続できるようにします。