Junos PyEZアプリケーションでインラインまたは外部のテーブルとビューをロードする
概要 定義済みテーブルまたはインラインまたは外部のカスタムテーブルをJunos PyEZアプリケーションにインポートします。
Junos PyEZのテーブルとビューは、Junosデバイスを設定したり、運用コマンドの出力や設定データから特定の情報を抽出したりするためのシンプルで効率的な方法を提供します。Junos PyEZには、アプリケーションで使用できる定義済みの操作テーブルとビューのセットが用意されています。また、独自のカスタム操作テーブルと構成テーブルとビューを作成することもできます。
クイックインラインテーブルとビューを複数行文字列としてPython アプリケーションで直接作成することも、外部ファイルに 1 つ以上のテーブル定義とビュー定義を作成してテーブルを Python アプリケーションにインポートすることもできます。インラインテーブルとビューは使いやすいですが、外部ファイルを使用すると、中央の再利用可能なライブラリを作成できます。
PythonアプリケーションでJunos PyEZの定義済みテーブルとビューを使用するには、テーブルにインポートする必要があります。カスタムのテーブルとビューを使用するには、テーブル定義とビュー定義を作成し、モジュールの内部か外部かに応じて、定義をアプリケーションに読み込むかインポートする必要があります。次のセクションでは、モジュールの内部と外部の両方にあるテーブルとビューのこのプロセスの概要を説明します。
Junos PyEZの定義済みテーブルとビューをインポートする
Junos PyEZ jnpr.junos.op
モジュールと jnpr.junos.command
モジュールは、いくつかの一般的な運用RPCとコマンドに対して、定義済みのテーブルとビューの定義を提供します。Python アプリケーションで Junos PyEZ の定義済みテーブルとビューを使用するには、アプリケーションに適切なインポートステートメントを含める必要があります。Junos PyEZ Device
クラスをインポートするとともに、必要なテーブルもインポートする必要があります。
以下の例では、 EthPortTable
モジュールから定義済みの運用テーブル をインポートします jnpr.junos.op.ethport
。
from jnpr.junos import Device from jnpr.junos.op.ethport import EthPortTable
テーブル定義とビュー定義をインポートした後は、「 テーブルとビューの使用」の説明に従って使用できます。次に、Table で定義されている RPC のデータを取得し、インターフェイス名と動作ステータスを出力する例を示します。
from jnpr.junos import Device from jnpr.junos.op.ethport import EthPortTable with Device(host='router1.example.net') as dev: eth = EthPortTable(dev) eth.get() for item in eth: print ("{}: {}".format(item.name, item.oper))
Junos PyEZの定義済みテーブルとビューの詳細については、 定義済みJunos PyEZ操作テーブル(構造化出力)を参照してください。
インラインテーブルとビューの読み込み
Junos PyEZアプリケーションでカスタムインラインテーブルとビューを作成、ロード、使用するには:
テーブル定義とビュー定義が読み込まれた後は、モジュールでのインラインテーブルと外部テーブルの使用方法に違いはありません。詳細については、「 テーブルとビューの使用」を参照してください。
外部テーブルとビューのインポート
外部テーブルとビューの定義は、Junos PyEZアプリケーションの外部にあるファイルに配置されます。外部のカスタムテーブルとビューを作成してJunos PyEZアプリケーションにインポートするには:
テーブル定義とビュー定義が読み込まれた後は、モジュールでのインラインテーブルと外部テーブルの使用方法に違いはありません。詳細については、「 テーブルとビューの使用」を参照してください。
テーブルとビューの使用
テーブル定義とビュー定義をロードまたはインポートした後、定義済み、カスタムインライン、またはカスタム外部テーブルを同じ方法で使用できます。
テーブルを使用するには:
次の例では、UserTable
カスタム外部テーブル をインポートします。アプリケーションはデバイスに接続し、Tables のget()
メソッドを呼び出して階層レベルから[edit system login]
オブジェクトを取得しますuser
。次に、アプリケーションは各ユーザー名とそれに対応するログインクラスを出力します。
from jnpr.junos import Device from myTables.ConfigTables import UserTable with Device(host='router.example.com') as dev: users = UserTable(dev) users.get() for account in users: print("Username is {}\nUser class is {}".format(account.username, account.userclass))
Junos PyEZ テーブルの使用に関する詳細については、以下のトピックを参照してください。