Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Junos PyEZ テーブルと TextFSM テンプレートを使用する

概要 Junos PyEZ op テーブルは、それ自体で、または Junos PyEZ View と組み合わせて TextFSM テンプレートを参照して、任意のネットワーク デバイスからの CLI または VTY コマンド出力を解析できます。

TextFSM テンプレートについて

Junos PyEZ op テーブルを使用すると、CLI や VTY コマンドの出力からデータを抽出できます。表はビューを参照して、コマンド出力のフィールドを Python オブジェクトにマップできます。Junos PyEZ リリース 2.4.0 以降、Junos PyEZ op テーブルは、それ自体または View と組み合わせて TextFSM テンプレートを参照して、コマンド出力を解析することもできます。Junos PyEZ op テーブルでは、TextFSM テンプレートを使用して、ベンダー、ネットワーク オペレーティング システム、コマンドに関係なく、あらゆるネットワーク デバイスからのコマンド出力を解析できます。

TextFSM は、ネットワーク デバイスからの show コマンド出力などの半フォーマット CLI 出力を解析する Python ライブラリです。これはGoogleによって開発され、その後Apache 2.0ライセンスでリリースされました。モジュールには、テンプレートと入力テキストが必要です。このテンプレートでは、正規表現を使用してデータを解析する方法を説明し、複数のテンプレートを定義して同じデータに適用できます。

TextFSM'のクラスを使用すると、ユーザーは特定のCliTableプラットフォーム上のコマンドを、コマンド出力を解析するテンプレートにマッピングできます。ネットワーク自動化会社 Network to Code は、ネットワーク デバイス用CliTableの TextFSM テンプレートのリポジトリとともに、Python ラッパーを開発しました。Junos PyEZ サーバーまたは仮想環境に必要に応じてライブラリをインストールntc-templatesし、Junos PyEZ テーブル内の NTC テンプレートやその他の TextFSM テンプレートを参照できます。

NTC テンプレートは、ネットワーク デバイスからの show コマンド出力を解析します。各 NTC テンプレートは、指定されたコマンドの期待される出力フィールドを定義し、各項目に対して、データをヘッダーにマッピングします。NTC テンプレートファイル名は、ベンダー、ネットワーク オペレーティング システム、およびコマンド(アンダースコア)を識別するため、システムは特定のプラットフォームとコマンドに使用するテンプレートを簡単に決定できます。

たとえば、 juniper_junos_show_arp_no-resolve.textfsm テンプレートを考えてみましょう。

このテンプレートは、 show arp no-resolve ジュニパーネットワークス Junos デバイスからのコマンド出力を解析します。

Junos PyEZ op テーブルでは、NTC テンプレートやその他の TextFSM テンプレートを使用して、非構造化コマンドの出力を解析できます。表では、以下のフィールドを定義することで、TextFSM テンプレートを使用します。Junos PyEZ では、 および commandplatform値を使用してテンプレートのファイル名を指定します。

  • command: command- 解析する出力を生成するコマンド。コマンドは、NTC テンプレートまたはその他の TextFSM テンプレートのファイル名内のコマンド文字列にマップする必要があります。

  • key: key— TextFSM テンプレートまたは Junos PyEZ ビューで定義されたフィールドで、レコード項目を一意に識別するために使用されます。

  • platform: platform— 例えば juniper_junos、TextFSM テンプレートのベンダーとオペレーティング システム。プラットフォーム値は、NTC テンプレートまたはその他の TextFSM テンプレートのファイル名内のプラットフォーム文字列と一致する必要があります。

  • use_textfsm: True—Junos PyEZ テーブルで、特定のプラットフォームとコマンドに対して TextFSM テンプレートを使用して、コマンド出力を解析する必要があることを示します。

TextFSM テンプレートを使用してコマンド出力を解析する方法

Junos PyEZ テーブルでは、定義済みの NTC テンプレートを含む TextFSM テンプレートを使用して、Junos デバイスからの show コマンド出力を解析できます。

Junos PyEZ テーブルで TextFSM テンプレートを使用するには、

  1. ntc-templates Junos PyEZ サーバーまたは仮想環境にライブラリをインストールします。

  2. 、 、 platform、 引数、およびuse_textfsm操作にcommandkey必要な追加の引数を含むカスタム Junos PyEZ テーブルを作成します。

    Junos PyEZ アプリケーションでは、 platform および command の値を使用してテンプレートのファイル名を指定します。この場合は juniper_junos_show_arp_no-resolve.textfsm です

  3. テーブルを使用してデータを取得する Junos PyEZ アプリケーションを作成します。

  4. アプリケーションを実行します。

    表では、NTC テンプレートを使用して出力フィールドを抽出します。テーブル項目ごとに、アプリケーションは、定義されたキーと各フィールドのデータを返します。

Junos PyEZ ビューを含む TextFSM テンプレートを使用してコマンド出力を解析する方法

Junos PyEZ テーブルでは、TextFSM テンプレートと Junos PyEZ ビューを組み合わせてコマンド出力を解析できます。TextFSM テンプレートは、データをヘッダーにマッピングします。ビューでは、変数名を、返すフィールドのテンプレートで定義された見出しにマップできます。これは、テンプレートで定義されたものとは異なる変数名を使用する場合や、異なるフィールドを返したい場合などに便利です。Junos PyEZ は、TextFSM テンプレートと Junos PyEZ ビューの両方に共通するフィールドのみを返します。

次の例では 、juniper_junos_show_arp_no-resolve.textfsm テンプレートを使用してコマンドの出力を解析します。Junos PyEZ ビューは、データを新しい変数名にマップし、フィールドのサブセットのみを返します。テンプレートを確認するには、 TextFSM テンプレートについてを参照してください。

Junos PyEZ テーブルで TextFSM テンプレートとビューを使用するには、

  1. 操作に必要な追加の引数と、 、 keyplatformuse_textfsmview 引数を含むcommandカスタム Junos PyEZ テーブルを作成します。

  2. 返すテンプレート フィールドと各フィールドの対応する変数名を定義する Junos PyEZ ビューを作成します。

    この場合、ビューは TextFSM テンプレートで定義されたフィールドをマップ FLAGS せず、解析されたデータにはこの値は含まれません。

  3. テーブルを使用してデータを取得する Junos PyEZ アプリケーションを作成します。

  4. アプリケーションを実行します。

    表では、NTC テンプレートとビューを使用して出力フィールドを抽出します。アプリケーションは、表項目ごとに、定義されたキーと、ビューで定義された変数名にマップされたフィールドのデータを戻します。

カスタム TextFSM テンプレートの使用方法

Junos PyEZ テーブルは、パッケージの一部としてインストールされている TextFSM テンプレートを ntc-templates 使用することも、カスタム TextFSM テンプレートを参照することもできます。Junos PyEZ アプリケーションでカスタム TextFSM テンプレートを使用するには、テーブル インスタンスを定義するときにテンプレート ディレクトリへの絶対パスを指定する必要があります。

Junos PyEZ テーブルでカスタム TextFSM テンプレートを使用するには、

  1. カスタム テンプレートのディレクトリを作成します。

  2. templates ディレクトリで、テンプレートを作成し、 .textfsm ファイル名表記規則を使用してファイルの名前をplatform_command付けます。

  3. テンプレートファイル名と同じ platformcommand を定義するJunos PyEZテーブルを作成します。

  4. Junos PyEZ アプリケーションで、Table インスタンスを定義する際にカスタム テンプレート ディレクトリへの絶対パスを指定します。

  5. アプリケーションを実行します。

Junos PyEZ テーブルと TextFSM テンプレートを使用してベンダーのコマンド出力を解析する方法

Junos PyEZ テーブルでは、TextFSM テンプレートを使用して、どのベンダーのネットワーク デバイスからのコマンド出力も解析できます。Python アプリケーションで出力を取得するか、ファイルから出力を読み取ることができます。Junos PyEZ Table インスタンスを作成する場合、インスタンスを渡す代わりに、コマンドの出力文字列を Table の raw 引数に Device 渡すことができます。

たとえば、次の TextFSM テンプレートを考えてみましょう。

このテンプレートは、指定された show alarms detail デバイスからのコマンド出力を解析します。

次の例では、カスタム TextFSM テンプレート の cisco_xr_show_alarms_detail.textfsm と View を使用してコマンド出力を解析する Junos PyEZ テーブルを show alarms detail 定義します。この例では、ライブラリを netmiko 使用してデバイスから直接データを取得します。アプリケーションで Table インスタンスが作成されると、引数は raw コマンド出力に渡され、引数は template_dir カスタム テンプレートを含むディレクトリへのパスを定義します。

アプリケーションを実行すると、デバイスからコマンド出力を取得し、指定されたディレクトリの TextFSM テンプレートと View を使用して出力を解析します。Junos PyEZ は、TextFSM テンプレートと Junos PyEZ ビューの両方に共通するフィールドのみを返します。また、アプリケーションはコマンド出力をファイルに保存するため、次の例に示すように、後で出力を処理できます。

次の例では、前の例と同じ TextFSM テンプレートと Junos PyEZ View を使用していますが、この場合、コマンド出力はファイルから読み取られます。