Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

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

Junos PyEZ運用(op)テーブルは、単独で、またはJunos PyEZビューと一緒にTextFSMテンプレートを参照して、任意のネットワークデバイスからのCLIまたはVTYコマンド出力を解析できます。

TextFSMテンプレートを理解する

Junos PyEZ opテーブルは、ネットワークデバイスのCLIまたはVTYコマンド出力からデータを抽出することができます。テーブルは、ビューを参照して、コマンド出力のフィールドをPythonオブジェクトにマップできます。Junos PyEZ opテーブルは、単独で、またはビューとともにTextFSMテンプレートを参照して、コマンド出力を解析することもできます。Junos PyEZ opテーブルでは、TextFSMテンプレートを使用して、ベンダー、ネットワークOS、コマンドに関係なく、あらゆるネットワークデバイスからのコマンド出力を解析できます。

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

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

NTCテンプレートは、ネットワークデバイスからのshowコマンド出力を解析します。各NTCテンプレートは、特定のコマンドに予期される出力フィールドを定義し、各項目について、データをヘッダーにマッピングします。NTCテンプレートのファイル名は、プラットフォーム(ベンダーとネットワークOS)とコマンド(アンダースコア付き)を識別するため、システムは使用するテンプレートを簡単に判断できます。ファイル名の形式では、次の構文を使用します。

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

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

Junos PyEZ opテーブルでは、NTCテンプレートまたはその他のTextFSMテンプレートを使用して、非構造化コマンド出力を解析できます。この表では、次のフィールドを定義することで TextFSM テンプレートを使用します。Junos PyEZ は、 platform 値と command 値を使用してテンプレートのファイル名を決定します。

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

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

  • platform: platform—TextFSMテンプレートのベンダーとOS(例: juniper_junos)。プラットフォーム値は、NTCテンプレートまたはその他のTextFSMテンプレートのファイル名にあるプラットフォーム文字列と一致する必要があります。

  • use_textfsm: True— True に設定すると、指定されたプラットフォームとコマンドのTextFSMテンプレートを使用してコマンド出力を解析します。

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

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

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

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

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

    Junos PyEZアプリケーションは、 platform 値と command 値を使用してテンプレートのファイル名(この場合は juniper_junos_show_arp_no-resolve.textfsm)を決定します。 key 値はテンプレートのヘッダーと一致する必要があります。

  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 テンプレートについて」を参照してください。

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

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

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

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

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

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

    このテーブルでは、NTCテンプレートとJunos PyEZビューを使用して出力フィールドを抽出しています。テーブルアイテムごとに、アプリケーションは定義されたキーとビューで定義されたフィールドのデータを返します。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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