Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

在 Junos PyEZ 应用程序中加载内联或外部表和视图

总结 将预定义表、内联或外部自定义表导入 Junos PyEZ 应用程序。

Junos PyEZ 表和视图提供了一种简单有效的方法来配置 Junos 设备或从操作命令输出或配置数据中提取特定信息。Junos PyEZ 提供了一组预定义的操作表和视图,您可以在应用程序中使用,也可以创建自己的自定义操作或配置表和视图。

可以直接在 Python 应用程序中将快速内联表和视图创建为多行字符串,也可以在外部文件中创建一个或多个表和视图定义,并将表导入 Python 应用程序。内联表和视图更易于使用,但使用外部文件可以创建可重用的中央库。

要在 Python 应用程序中使用 Junos PyEZ 预定义的表和视图,必须将表导入到应用程序中。若要使用自定义表和视图,必须创建表和视图定义,然后将这些定义加载或导入到应用程序中,具体取决于它们是模块的内部还是外部。以下各节概述了模块内部和外部的表和视图的此过程。

导入 Junos PyEZ 的预定义表和视图

Junos PyEZ jnpr.junos.op 模块和 jnpr.junos.command 模块为一些常见的操作 RPC 和命令提供预定义的表和视图定义。要在 Python 应用程序中使用 Junos PyEZ 预定义的表和视图,必须在应用程序中包含相应的导入语句。除了导入 Junos PyEZ Device 类外,还必须导入任何必需的表。

下面的示例从模块导入jnpr.junos.op.ethport预定义的操作表 EthPortTable():

导入表和视图定义后,可以按照 使用表和视图中所述使用它们。以下示例检索表中定义的 RPC 的数据,然后打印接口名称和操作状态。

有关 Junos PyEZ 预定义表和视图的详细信息,请参阅预定义 Junos PyEZ 操作表(结构化输出)。

加载内联表和视图

要在 Junos PyEZ 应用程序中创建、加载和使用自定义内联表和视图,请执行以下操作:

  1. 在模块中导入以下类和库:
  2. YAML 中的一个或多个表和视图定义为多行字符串。
  3. 通过包含以下语句来加载表和视图定义,其中 string-name 是包含表/视图定义的多行字符串的标识符:
  4. 连接到设备并使用表检索信息和/或配置设备,具体取决于表的类型,例如:

加载表和视图定义后,在模块中使用内联表或外部表的方式没有区别。有关其他信息,请参阅 使用表和视图

导入外部表和视图

外部表和视图定义放置在 Junos PyEZ 应用程序外部的文件中。要创建外部自定义表和视图并将其导入 Junos PyEZ 应用程序,请执行以下操作:

  1. 在 YAML 中定义一个或多个表和视图,并将它们保存到具有 .yml 扩展名的文件中。
  2. 创建一个与表文件具有相同基名称但使用 .py 扩展名的文件,并在文件中包括以下四行代码。
  3. 如果 .yml.py 文件位于子目录中,请在该子目录中包含一个 __init__.py 文件,以便 Python 在处理应用程序中的 Table import 语句时检查此目录。
  4. 在 Junos PyEZ 应用程序中,导入 Device 类和任何必需的表。
  5. 连接到设备并使用表检索信息和/或配置设备,具体取决于表的类型,例如:

加载表和视图定义后,在模块中使用内联表或外部表的方式没有区别。有关其他信息,请参阅 使用表和视图

使用表和视图

加载或导入表和视图定义后,可以以相同的方式使用预定义的自定义内联表或自定义外部表。

要使用表:

  1. Device创建实例并打开与目标设备的连接:
  2. 创建表实例并将其与 Device 实例关联。
  3. 使用表检索信息和/或配置设备,具体取决于表的类型。
  4. 循环访问并操作生成的对象以提取所需的信息。

下面的示例导入自定义外部表 . UserTable应用程序连接到设备并调用 Table 的方法 get() 从层次结构级别检索 user 对象 [edit system login] 。然后,应用程序打印每个用户名及其相应的登录类。

有关使用 Junos PyEZ 表的详细信息,请参阅以下主题: