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 テーブルは、TextFSM テンプレートを単独で、または Junos PyEZ ビューと組み合わせて参照し、任意のネットワーク デバイスからの CLI または VTY コマンド出力を解析できます。

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

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

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

TextFSMCliTableのクラスを使用すると、ユーザーは特定のプラットフォーム上のコマンドを、コマンド出力を解析するテンプレートにマップできます。ネットワーク自動化企業であるNetwork to Codeは、ネットワークデバイス用のTextFSMテンプレートのリポジトリとともに、用のPythonラッパーCliTableを開発しました。必要に応じて、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は、 platform および command の値を使用してテンプレートのファイル名を決定します。

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

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

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

  • use_textfsm: True- Junos PyEZテーブルが、指定されたプラットフォームとコマンドのTextFSMテンプレートを使用して、コマンド出力を解析することを示します。

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

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

Junos PyEZテーブルでTextFSMテンプレートを使用するには、以下を行います。

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

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

    Junos PyEZアプリケーションは、 platformcommand の値を使用して、テンプレートのファイル名(この場合は 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 テンプレートとビューを使用して出力フィールドを抽出します。テーブル項目ごとに、アプリケーションは定義されたキーと、ビューで定義された変数名にマップされたフィールドのデータを返します。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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