在 Python 中使用 Junos Snapshot Administrator
您可以在运行 Junos OS 的设备上使用 Python 中的 Junos 快照管理器 (jsnapy) 来捕获和保存运行时环境快照、比较两个快照或捕获快照并立即对其进行评估。
拍摄快照时,您需要提供快照名称。Jsnapy 使用快照名称、configuration.yml或device.yml文件中的目标设备名称以及测试文件测试节字符串来生成唯一标识该快照的快照文件名。例如,假设您正在从设备 junos-device.example.com 收集数据,您可以定义快照名称 SNAP1
,并且您的测试文件有两个名为 ospf-checks
和 bgp-checks
的测试节。拍摄快照时,Junos 快照管理员会创建以下输出文件:
junos-device.example.com_SNAP1_ospf_checks.xml
junos-device.example.com_SNAP1_bgp_checks.xml
快照文件存储在 jsnapy 服务器上由 YAML 文件中/etc/jsnapy/jsnapy.cfg
的参数指定snapshot_path
的位置。默认情况下,位置为 /etc/jsnapy/snapshots
。
以下各节概述了 Junos 快照管理器命令:
拍摄快照
要拍摄设备的快照,请在 jsnapy 服务器的命令行上输入以下内容:
user@jsnapy-server$ jsnapy --snap snapshot-name -f configuration-filename
命令参数为:
snapshot-name
- 输出文件名中用于唯一标识该快照的字符串。configuration-filename
- 快照配置文件名。
例如,在维护升级之前,用户 bsmith 会拍摄设备的快照。快照名称为 , preupgrade
配置文件名为 config-snapshot.conf。由于 bsmith 没有在配置文件config-snapshot.yml中指定他的密码,因此在连接时,设备会提示输入用户的密码。
bsmith@server$ jsnap --snap preupgrade -f config-snapshot.yml
Connecting to device junos-device.example.com ................ Enter Password for username <bsmith> : Connecting to device junos-device.example.com ................ Tests Included: test_version_check Taking snapshot of COMMAND: show version Tests Included: check_chassis_fpc Taking snapshot of COMMAND: show chassis fpc
比较两个快照
要使用测试标准比较两个现有快照,请在 jsnapy 服务器的命令行中输入以下内容:
user@jsnapy-server$ jsnapy --check snapshot1 snapshot2 -f configuration-filename
命令参数为:
snapshot1
–输出文件名中用于唯一标识第一个快照的字符串。通常,这被输入为 PRE、preupgrage、pre-change 或某个名称来表示此快照首先出现。snapshot2
- 输出文件名中用于唯一标识第二个快照的字符串。通常,这被输入为 POST、postupgrage、post-change,或者一些名称来表示此快照排在第二位。configuration-filename
–快照配置文件名。
例如,在维护升级之前和之后,用户 bsmith 会拍摄设备的快照。快照名称为 preupgrade
和 postupgrade
。要使用配置文件 config-snapshot.yml中定义的条件比较这两个快照,bsmith 发出以下命令:
bsmith@server$ jsnap --check preupgrade postupgrade -f config-snapshot.yml
Junos 快照管理器输出显示目标路由器以及配置文件中每个活动测试部分的测试结果。示例输出如下所示:
*************************** Device: junos-device.example.com *************************** Tests Included: test_version_check ********************* Command: show version ********************* PASS | All "junos-version" was changed between the pre and post snapshot. It is now 15.1R3.3 [ 1 matched ] ------------------------------- Final Result!! ------------------------------- Total No of tests passed: 1 Total No of tests failed: 0 Overall Tests passed!!!
拍摄和评估快照
要拍摄快照并根据一组预定义的标准立即对其进行评估,请在 jsnapy 服务器的命令行上输入以下内容:
user@jsnapy-server$ jsnap --snapcheck snapshot-name -f configuration-filename
命令参数为:
snapshot-name
- 输出文件名中用于唯一标识该快照的字符串。configuration-filename
- 快照配置文件名。
例如,用户想要确认路由器 junos-device.example.com 上安装的软件包的数量。为此,他在 jsnapy 服务器的命令行上运行以下命令:
user@jsnapy-server$ jsnapy --snapcheck postupgrade -f config-software-check.yml
Junos 快照管理器输出显示目标路由器以及配置文件中每个活动测试部分的测试结果。示例输出如下所示:
Connecting to device junos-device.example.com ................ Taking snapshot of COMMAND: show version *************************** Device: junos-device.example.com *************************** Tests Included: test_version_check *************************** Command: show version *************************** PASS | All "//package-information/name" exists at xpath "//software-information" [ 59 matched ] ------------------------------- Final Result!! ------------------------------- Total No of tests passed: 1 Total No of tests failed: 0 Overall Tests passed!!!