在 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
():
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='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 应用程序,请执行以下操作:
加载表和视图定义后,在模块中使用内联表或外部表的方式没有区别。有关其他信息,请参阅 使用表和视图。
使用表和视图
加载或导入表和视图定义后,可以以相同的方式使用预定义的自定义内联表或自定义外部表。
要使用表:
下面的示例导入自定义外部表 . 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 表的详细信息,请参阅以下主题: