Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

示例:使用 SLAX 和 XSLT 操作脚本更改配置

此示例介绍如何使用 SLAX 操作脚本对 Junos OS 配置进行结构化更改。

设备配置

逐步过程

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

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

  2. 在配置模式下,在层次结构级别配置脚本的文件名 [edit system scripts op file]

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

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

  5. 执行操作脚本。

要求

此示例使用运行 Junos OS 的设备。

概述和操作脚本

SLAX 和 XSLT 操作脚本可使用 jcs:load-configuration 位于 junos.xsl 导入文件中的模板对 Junos OS 配置进行结构化更改。此示例会创建一个 SLAX op 脚本,该脚本使用 jcs:load-configuration 模板禁用运行 Junos OS 的设备上的接口。模板所需的所有值都定义为 jcs:load-configuration 变量,然后传入模板中。

在此示例中 usage ,变量将初始化,并提供脚本功能的一般说明。运行脚本时,它会调用 jcs:output() 该功能将使用说明输出到 CLI。这样您就可以验证是否使用脚本来达到正确的目的。

脚本调用功能 jcs:get-input() ,提示接口名称禁用,并将接口名称存储在变量中 interface 。该 config-changes 变量存储 Junos XML 配置数据以在设备上加载并引用 interface 变量。 jcs:load-configuration 模板调用会将参数值 configuration 设置为该变量中 config-changes 存储的数据。

load-action 量设置为 merge,将新配置数据与候选配置合并。这相当于 CLI 配置模式命令 load merge

options 变量定义了提交操作的选项。它使用 := 操作员创建节点集,该节点集作为参数的 commit-options 值传递至模板。此示例包括将 log 提交说明添加到提交日志以供将来参考的标记。

对功能的 jcs:open() 调用将打开与本地设备上的 Junos OS 管理进程 (mgd) 的连接,并返回存储在变量中的 conn 连接手柄。然后,脚本称为 jcs:load-configuration 模板。

操作 := 员将模板调用的结果 jcs:load-configuration 复制到临时变量,并在该变量上运行 node-set 该功能。随后,生成的节点集存储在变量中 results 。操作员 := 确保 results 变量为节点集,而不是结果树片段,以便脚本可以访问内容。

jcs:close() 功能可关闭与设备的连接。默认情况下, jcs:load-configuration 该模板不会向 CLI 输出消息。此示例将搜索并打印 xmn:warningxnm:error 消息以作为响应,以便快速识别提交中的任何问题。

SLAX 语法

验证

验证提交

目的

验证提交是否成功。

行动

脚本中应包含代码,用于解析模板返回的 jcs:load-configuration 节点集,以防出现任何错误或警告。这样您就可以更轻松地确定提交是否成功。如果没有警告或错误消息,您可以通过多种方式验证提交是否成功。

  • 检查提交日志以验证提交是否成功。如果在参数中commit-options包含log选项,则在提交日志中应显示消息以及提交信息。

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

验证配置更改

目的

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

行动

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

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

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