Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

提交脚本故障排除

启用提交脚本并发出 commit 命令后,提交脚本将立即生效。

表 1 介绍了可能发生的一些常见问题。

表 1:故障排除提交脚本

问题

解决 方案

命令的 commit check | display detail 输出不会引用预期的提交脚本。

请确保已将语句包含 file 在层次结构级别上的每一个语句, [edit system scripts commit] 从而启用所有脚本。

输出包含错误消息:

error: could not open commit script: 
/var/db/scripts/commit/filename:
No such file or directory

请确保提交脚本存在于交换机、路由器或安全设备上的 /var/db/scripts/commit/ 目录中。

出现以下错误和警告消息:

error: invalid transient change 
generated by commit script: filename 
 warning: 1 transient change was generated 
without [system scripts commit allow-transients]

其中一个提交脚本包含生成 瞬时更改的说明,但您尚未启用瞬时更改。

要纠正此问题,请采取以下操作之一:

  • allow-transients在层次结构级别中[edit system scripts commit]包含语句。

  • 从指示的脚本中删除生成瞬时更改的代码。

  • 禁用配置中的脚本。

不会执行预期操作。

例如,即使配置中包含了应引发警告消息的问题,也不会出现警告消息。

  1. 确保已启用脚本。如果未启用脚本,则会忽略这些脚本。

    要启用脚本,请在层次结构级别中[edit system scripts commit]包含file filename语句。

  1. 确保脚本中已包含所需的样板。有关详细信息,请参阅 提交脚本所需的样板

  1. 请确保脚本中的可扩展标记语言路径 (XPath) 表达式包含表达为 Junos XML 协议标记元素的有效 Junos OS 命令行界面 (CLI) 语句。

    您可以通过检查 Junos XML API 配置开发人员参考或 发出 show configuration | display xml 操作模式命令来验证 XML 层次结构。

  1. 请确保脚本中的编程说明引用正确的 上下文节点

    如果将一个指令嵌套在另一个指令内,则外部指令会更改上下文节点,因此内部指令必须相对于外部。

    例如,说明 <xsl:for-each> 包含 XPath 表达式,可更改上下文节点。因此,嵌 <xsl:if> 套指令使用与 XPath 表达式相对的 interfaces/interface[starts-with(name, 't1-')] XPath 表达式。

    <xsl:for-each select="interfaces/
         interface[starts-with(name, 't1-')]">
    <xsl:if test="not(description)">

提交操作失败,系统日志文件中的错误消息表示:

Process (pid,cscript) attempted to exceed RLIMIT_DATA

提交由一个或多个提交脚本检查的配置时,可能需要增加分配给提交脚本的内存量,以适应大型配置的处理。

默认情况下,分配给执行脚本的数据段部分的最大内存量是系统可用总内存的一半,最高值为 128 MB。要增加分配给每个执行的提交脚本的最大内存,请在[edit system scripts commit]层级使用适当的内存限制字节配置max-datasize size语句,然后再提交配置。