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脚本安全地修改配置。此示例演示如何使用利用 PyEZ API Junos OS Python op 脚本 更改 Junos配置。

要求

此示例具有以下硬件和软件组件:

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

概述和 Op 脚本

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

Python op 脚本导入以下内容:

  • Device 类 — 处理与运行新设备的Junos OS

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

  • jnpr.junos.exception 模块 — 包含管理运行新网络的设备时遇到的Junos OS

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

此示例将先对 usage 该变量进行初始化,并简要说明脚本的功能。执行脚本时,脚本将输出该脚本CLI以便用户可以验证该脚本的用途。

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

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

Python 脚本

配置

逐步过程

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

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

    注意:

    未签名的 Python 脚本必须由 super-user 登录类中的 root 或Junos OS拥有,并且只有文件所有者才能拥有此文件的写入权限。

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

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

    注意:

    language python 语句使用 Python 2.7 执行脚本。要使用 Python 3 在运行 Junos OS 或更高版本19.4R1执行 language python3 Python 脚本,请改为配置 语句。

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

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

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

验证

验证提交

目的

验证 提交 是否成功。

行动

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

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

  • 检查系统日志消息文件以验证提交操作是否记录。在这种情况下,您还会看到禁用 SNMP_TRAP_LINK_DOWN 接口的消息。根据对追踪选项的配置设置,此消息可能会显示在日志文件中,也可能不会显示在您的日志文件中。

验证配置更改

目的

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

行动

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

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

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