Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

示例:使用操作脚本搜索文件

此示例脚本在运行 Junos OS 的设备上的文件中搜索与给定正则表达式匹配的行。此示例在jcs:grep操作脚本中使用模板。

要求

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

概述和操作脚本

该模板搜索 jcs:grep ASCII 文件中与正则表达式匹配的行。该模板驻留在 junos.xsl 导入文件中,所有运行 Junos OS 的交换机、路由器和安全设备都提供标准 Junos OS 安装文件。 jcs:grep 要在脚本中使用模板,必须将 junos.xsl 文件导入脚本中,并将前缀映射到 jcs 由 URI http://xml.juniper.net/junos/commit-script/1.0 标识的命名空间。

在此示例中,模板所需的所有 jcs:grep 值都定义为全局参数。参数的值作为命令行参数传递到脚本中。以下脚本定义两个参数, filename 用于 pattern存储输入文件路径和正则表达式的值。如果在执行脚本时省略任一参数,则脚本将生成错误并停止执行。否则,脚本会调用 jcs:grep 模板并传递提供的参数。

如果正则表达式包含语法错误,则 jcs:grep 模板会为文件中的每一行生成一 error: regex error 条消息。如果正则表达式语法有效,则模板将解析输入文件。对于每个匹配项,模板都会向结果树添加一个 <match> 包含 <input> 子标记的 <output> 元素。模板将匹配字符串写入子元素, <output> 并将相应的匹配行 <input> 写入子元素:

在 SLAX 脚本中 := ,操作人员将模板调用的结果 jcs:grep 复制到临时变量,并针对该 node-set 变量运行函数。 := 操作人员确保该 results 变量是节点集而不是结果树分片,以便脚本可以访问内容。XSLT 脚本明确调用等效步骤。然后,该脚本遍历所有生成的输入元素并打印每个匹配项。

XSLT 语法

SLAX 语法

配置

程序

逐步过程

要下载、启用和运行脚本:

  1. 将 XSLT 或 SLAX 脚本复制到文本文件中,根据需要将文件命名 为 grep.xslgrep.slax ,并将其下载到设备上的 /var/db/script/op/ 目录中。

  2. 在配置模式下,在 file 层次结构级别包括语句 [edit system scripts op] ,并根据需要将 grep.xslgrep.slax 包含在内。

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

  4. 通过发出 op grep filename filename pattern pattern 操作模式命令来执行操作脚本。

验证

验证脚本参数

目的

验证参数名称和说明是否显示在命令行界面 (CLI) 帮助中。

行动

发出 op grep ? 操作模式命令。CLI 根据脚本中的全局变量 arguments 中的定义,列出了脚本参数的可能补全。

验证操作脚本执行

目的

验证脚本是否按预期运行。

行动

如果发出 op grep 命令,但无法提供文件名或 regex 模式,则脚本会发出错误消息并停止执行。例如:

发出 op grep filename filename pattern pattern 命令时,脚本会列出输入文件中与正则表达式匹配的所有行。