Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

在提交脚本中生成自定义警告、错误或系统日志消息

Junos OS 提交脚本可以在提交操作期间生成自定义警告、错误或系统日志消息,以便在配置不符合自定义配置规则时向您发出提醒。生成错误也会导致提交操作失败。要在提交脚本中生成自定义警告、错误或系统日志消息:

  1. 包括 提交脚本所需的样板中的相应提交脚本样板。为方便起见,现将其转载如下:

    XSLT 样板 SLAX 样板 Python 样板
  2. 在注释“insert your code here,”指示的位置,包括一个或多个 XSLT 编程指令或其 SLAX 或 Python 等效指令。常用的 XSLT 构造包括:

    • <xsl:choose> <xsl:when> <xsl:otherwise>- 导致在不同情况下处理不同指令的条件结构。该<xsl:choose>指令包含一个或多个<xsl:when>元素,每个元素都测试一个 XPath 表达式。如果测试的计算结果为 true,则 XSLT 处理器将执行元素中的<xsl:when>指令。XSLT 处理器仅处理第一个元素中<xsl:when>包含的指令,该test元素的属性计算结果为 true。如果元素test的属性均<xsl:when>未计算为 true,则处理元素的内容<xsl:otherwise>(如果有)。

    • <xsl:for-each select="xpath-expression">- 指示 XSLT 处理器将一组节点收集在一起并逐个处理它们的编程指令。节点由属性中的可扩展标记语言 (XML) 路径语言 (XPath) 表达式 select 选择。然后根据指令中 <xsl:for-each> 包含的指令处理每个节点。对指令中的 <xsl:for-each> 代码进行递归计算,以与 XPath 表达式匹配的每个节点进行计算。在每次传递期间,上下文都会移动到节点。

    • <xsl:if test="xpath-expression">- 如果属性中的 test XPath 表达式的计算结果为 true,则将导致处理指令的条件构造。

      例如,当语句未包含在[edit system]层次结构级别时host-name,以下编程指令的计算结果为 true:

      在 SLAX 中, if 构造如下所示:

      类似地,在 Python 中:

  3. 包括适当的构造以生成警告、错误或系统日志消息。

    在 SLAX 和 XSLT 脚本中,包括 <xnm:warning><xnm:error><syslog> 带有 <message> 指定消息内容的子元素的元素。对于警告和错误消息,可以包含其他几个子元素,如 jcs:edit-pathjcs:statement 模板,这些子元素会导致警告或错误消息包含相关的配置层次结构和语句信息,如以下示例所示。

    在 Python 脚本中,包括 jcs.emit_warning()jcs.emit_error()jcs.syslog() 函数,并将消息字符串包含在参数列表中。

    例如,当 XSLT 提交脚本使用以下 <xnm:warning> 元素生成警告时:

    它在操作过程中 commit 发出以下输出:

    同样,当 XSLT 提交脚本使用以下 <xnm:error> 元素生成错误时:

    它在操作过程中 commit 发出以下输出:

    注意:

    在 SLAX 和 XSLT 脚本中,如果要在脚本生成的配置更改中包含警告消息,则可以通过在模板中jcs:emit-change包含message参数来生成警告。message 参数使jcs:emit-change模板调用<xnm:warning>模板,该模板向 CLI 发送警告通知。(有关更多信息,请参阅使用提交脚本生成持久性或瞬态配置更改的概述

    对于系统日志消息,唯一支持的子元素是 <message>

    有关可以包含的所有 XSLT 标记和属性的说明,请参阅 生成消息时要使用的 SLAX 和 XSLT 提交脚本标记元素

    有关这些构造的 SLAX 版本,请参阅 示例:生成自定义警告消息示例:生成自定义错误消息示例:生成自定义系统日志消息

  4. 使用有意义的名称保存脚本。

  5. 将脚本复制到硬盘上的 /var/db/scripts/commit 目录或闪存驱动器上的 /config/scripts/commit 目录。

    有关设置提交脚本的存储位置的信息,请参阅 存储和启用 Junos 自动化脚本在闪存中存储脚本

  6. 通过在[edit system scripts commit]层次结构级别包含file filename语句来启用脚本。

  7. 如果脚本是用 Python 编写的,请启用未签名的 Python 脚本的执行。

  8. 提交配置。

    注意:

    如果设备具有双路由引擎,并且您希望脚本在这两个引擎上都生效,则可以发出 commit synchronize scripts 命令以同步配置,并将脚本复制到另一个路由引擎,作为提交操作的一部分。