在 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 的预定义表和视图,您必须在应用程序中包含相应的 import 语句。除了导入 Junos PyEZ Device 类外,还必须导入任何必需的表。
以下示例从模块导入jnpr.junos.op.ethport预定义的操作表EthPortTable:
from jnpr.junos import Device from jnpr.junos.op.ethport import EthPortTable
导入表和视图定义后,可以按照 使用表和视图中的说明使用它们。以下示例检索表中定义的 RPC 的数据,然后打印接口名称和操作状态。
from jnpr.junos import Device from jnpr.junos.op.ethport import EthPortTable with Device(host='router.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 应用程序:
加载表和视图定义后,在模块中使用内联表或外部表的方式没有区别。有关其他信息,请参阅 使用表和视图。
使用表格和视图
加载或导入表和视图定义后,您可以以相同的方式使用预定义、自定义内联或自定义外部表。
要使用表:
以下示例导入自定义外部表 UserTable。应用程序连接到设备并调用 Table 的方法 get() 以 user 从层次结构级别检索 [edit system login] 对象。然后,应用程序打印每个用户名及其相应的登录类。
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 表的更多信息,请参阅以下主题: