Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

示例:使用 Python Op 脚本更改配置

操作脚本允许您对 Junos OS 配置进行受控更改。操作脚本十分有利,因为它们可以收集有关设备的操作信息,并根据这些信息更新配置。熟悉 Junos OS 的有经验的用户可以编写操作脚本,提示相关配置信息并相应修改配置。这使得对 Junos OS 缺乏经验的用户能够使用脚本安全地修改配置。此示例演示如何使用利用 Junos PyEZ API 的 Python 操作脚本 更改 Junos OS 配置。

要求

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

  • 运行 Junos OS 版本 16.1R3 或更高版本的 MX 系列路由器,包括 Python 扩展包。

概述和操作脚本

Python 操作脚本可使用 Junos PyEZ jnpr.junos.utils.config.Config 实用程序更改 Junos OS 配置。Junos PyEZ Config 实用程序提供锁定配置、加载配置数据并指定如何将其集成到配置、提交配置和解锁配置的实例方法。有关使用 Junos PyEZ 配置 Junos 设备的详细信息,请参阅 使用 Junos PyEZ 配置 Junos 设备。此示例中的 Python 操作脚本演示了如何更新配置以禁用本地设备上的接口。

Python 操作脚本导入以下内容:

  • Device 类 — 处理与 Junos 设备的连接

  • Config 类 — 在目标设备上执行配置模式命令

  • jnpr.junos.exception 模块 — 包含管理 Junos 设备时遇到的例外情况

  • jcs 模块 — 使脚本能够执行支持的扩展功能

在此示例中 usage ,变量将初始化,并使用脚本功能的一般说明。执行脚本时,脚本将在 CLI 上输出使用说明,以便用户可以验证该脚本的目的。

脚本调用 jcs.get_input() 扩展功能,提示用户输入接口名称禁用,并将接口名称存储在变量中 interface 。该 config_xml 变量是一个 XML 字符串,用于定义配置更改。

创建实例时Device,脚本不会提供主机参数,因为该实例会导致open()该方法与本地设备建立连接。此示例会使用上下文管理器mode='exclusive'在配置进行修改时获得专属锁定,从而创建Config实例。在此模式下,上下文管理器会自动处理锁定并解锁候选配置。实用Config程序方法将配置更改加载到候选配置中作为load merge操作并提交配置。此dev.close()方法可关闭连接。

Python 脚本

配置

逐步过程

要下载、启用和测试脚本:

  1. 将脚本复制到文本文件中, 命名文件 config-change.py,然后将其复制到设备上的 /var/db/scripts/op/ 目录。

    注意:

    未签名的 Python 脚本必须归 Junos OS super-user 登录类中的 root 或用户所有,并且只有文件所有者才能为该文件写入许可。

  2. 在配置模式下,在层次结构级别中[edit system scripts op]包括语file config-change.py句。

  3. 允许在设备上执行未签名的 Python 脚本。

    注意:

    将语句配置 language python3 为使用 Python 3 执行 Python 脚本,或将 language python 语句配置为使用 Python 2.7 执行 Python 脚本。有关更多信息,请参阅 语言

  4. commit and-quit发出 命令提交配置并返回到操作模式。

  5. 在运行脚本之前,发出 show interfaces interface-name 操作模式命令并记录将由脚本禁用的接口的当前状态。

  6. 执行操作脚本,方法是 op config-change.py 发出操作模式命令。

验证

验证提交

目的

验证 提交 是否成功。

行动

脚本中应包含与更改和提交配置相关的任何警告或错误的代码。这样您就可以更轻松地确定提交是否成功。如果没有警告或错误消息,您可以通过多种方式验证提交是否成功。

  • 检查提交日志以验证提交是否成功。

  • 检查 syslog 消息文件以验证提交操作是否已记录。在这种情况下,您还会看到禁 SNMP_TRAP_LINK_DOWN 用接口的消息。此消息可能会显示或可能不会显示在日志文件中,具体取决于跟踪选择的配置设置。

验证配置更改

目的

验证是否已将正确的更改集成到配置中。

行动

  • 显示配置并验证指定接口是否可见更改。

  • 例如,您还可以发出 show interfaces interface-name 操作模式命令来检查接口是否已禁用。在这种情况下,在禁用接口 之前 捕获的输出显示接口为 Enabled

    运行脚本禁用接口 捕获的输出显示接口现已 Administratively down