Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

示例:使用 Jsnapy 作为 Python 模块

此示例说明如何在 Python 脚本或程序中使用 Python 中的 Junos Snapshot Administrator (jsnapy) 功能。当此脚本中需要用户名和密码条目时,请将<用户名>和<密码>替换为适当的值。

jsnapy 的默认安装包括目录中的许多示例配置和测试文件/etc/jsnapy/samples/,包括几个名为 、module_data.pymodule_device.py、 和 module_snapcheck.pymodule_check.pyPython 脚本示例。这些文件每个都演示了在python脚本中作为模块运行的jsnapy的不同功能。

此示例将使用略微修改的 Python 脚本文件 module_data.py,来演示使用该选项运行 snapcheck jsnapy。该脚本演示如何从 Python 脚本中传递 YAML 配置数据。

要求

此示例使用以下硬件和软件组件:

  • 运行 Junos OS 的设备

  • 安装在服务器上的 jsnapy 实例(jsnapy 服务器)

  • 用于查看和更改脚本的文本编辑器

在为 jsnapy 编写自己的 Python 脚本之前,请确保您对 Python 编程概念和 jsnapy 操作都有透彻的了解。

概述

在此示例中,我们检查提供的 Python 脚本 /etc/jsnapy/samples/module_data.py.我们将看到脚本如何将 jsnapy 作为模块导入,如何定义 jsnapy 配置参数,以及如何在远程 Junos OS 设备上显示操作结果 snapcheck

拓扑

此示例使用一个简单的拓扑,其中 jsnapy 服务器连接到单个远程 Junos OS 设备。可以实现与多个设备的连接,但此示例中不讨论。

图 1:jsnapy 拓扑 jsnapy Topology

检查 Python 脚本

Python 脚本执行以下任务:

  • 将所需的 Python 模块导入脚本。

  • 定义一个变量,该变量用于从 jsnapy 模块调用 SnapAdmin() 函数。

  • 定义 jsnapy 配置参数并将其分配给变量。

  • 使用选项调用 snapcheck jsnapy,该选项使用先前定义的配置变量作为配置参数和快照文件名 pre

  • 将结果打印到 jsnapy 服务器的终端。

注意:

在其原始形式中,Python 脚本 module_data.py导入并调用 Data 漂亮的打印机模块。 pprint从脚本调用时,此模块会导致 python 将 jsnapy 从 Junos OS 设备接收的所有快照数据打印到 jsnapy 服务器的终端。由于此数据的长度,此示例中的调用 pprint 通过在调用前面加上井号 (#) 来注释掉。

注意注释

分步过程

  • 由于我们正在检查此示例中的现有脚本,因此我们将指出显示为文件第一行的注释。注释可以放在脚本中的任何位置,方法是以井号 (#) 开头注释。

导入 Python 模块

分步过程

  • 此脚本使用三个导入的模块,一个用于 jsnapy,一个用于将复杂数据打印到终端,另一个用于处理 Junos OS 设备。

定义用于调用 SnapAdmin 的变量

分步过程

  • 在这里,脚本将 jsnapy 模块中的 SnapAdmin() 函数分配给一个变量 js ,该变量易于使用,并且能够在调用 jsnapy 时传递参数。

定义 jsnapy 配置参数

分步过程

  • 此处,脚本定义 Junos OS 主机以及将在该主机上执行哪些测试。它将这些参数分配给变量 config_data。三引号允许 config_data 包含换行符。

    注意:

    指定要执行的主机和测试的另一种方法是引用 jsnapy 配置文件。配置文件可以定义一个或多个主机以及一个或多个测试文件。由于在此示例中,配置数据包含在 Python 脚本中, config_data 因此变量不会引用脚本外部的配置文件,而是使用出现在三引号 (“”) 之间的键值对填充。

使用定义的配置数据调用 jsnapy

分步过程

  • 在这里,脚本使用选项调用 snapcheck jsnapy,并传递配置信息和快照文件的名称。作为此调用的结果返回的信息将作为值存储在变量中 snapchk

    注意:

    您可以访问所有可用的 jsnapy 选项、、 checksnap以及在snapcheck调用 SnapAdmin() 后附加该选项。例如、 js.check(config_file, "snapshot1", "snapshot2")js.snap(config_file, "snapshot_name")js.snapcheck(config_file, "snapshot_name")

将结果打印到终端

分步过程

  • 在这里,脚本循环遍历返回的值,并以可读格式将它们打印到 jsnapy 服务器终端。这也是我们更改脚本以防止它将整个快照打印到终端的地方。

结果

为了便于查看,下面通过对文件module_data.py运行cat命令来显示修改后的脚本的内容。

验证

验证脚本的操作

目的

完成 Python 脚本以及所需的 jsnapy 配置和测试文件后,您可以通过从 jsnapy 服务器终端运行脚本来验证脚本的操作。

行动