提交脚本所需的样板
总结 定义提交脚本的样板。
Junos OS 提交脚本可以用可扩展样式表语言转换 (XSLT)、样式表替代语法 (SLAX) 或 Python 编写。提交脚本必须包括该脚本语言所需的必要样板,用于基本脚本功能以及脚本中使用的任何可选功能(如 Junos OS 扩展函数和命名模板)。本主题提供可在 XSLT、SLAX 和 Python 提交脚本中使用的标准样板。
SLAX 和 XSLT 提交脚本基于 Junos XML 和 Junos XML 协议标记元素。与所有 XML 元素一样,尖括号将 Junos XML 或 Junos XML 协议标记元素的名称括在其开始和结束标记中。这是一个 XML 约定,括号是完整标记元素名称的必需部分。不要将它们与文档中用来表示 Junos OS CLI 命令字符串可选部分的尖括号混淆。
提交脚本的 XSLT 样板
XSLT 提交脚本样板如下所示:
1 <?xml version="1.0" standalone="yes"?> 2 <xsl:stylesheet version="1.0" 3 xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 4 xmlns:junos="http://xml.juniper.net/junos/*/junos" 5 xmlns:xnm="http://xml.juniper.net/xnm/1.1/xnm" 6 xmlns:jcs="http://xml.juniper.net/junos/commit-scripts/1.0"> 7 <xsl:import href="../import/junos.xsl"/> 8 <xsl:template match="configuration"> <!-- ... insert your code here ... --> 9 </xsl:template> 10 </xsl:stylesheet>
第 1 行是可扩展标记语言 (XML) 处理指令 (PI)。此 PI 指定代码是使用 1.0 版以 XML 编写的。XML PI(如果存在)必须是脚本文件中的第一个非注释标记。
1 <?xml version="1.0"?>
第 2 行打开样式表,并将 XSLT 版本指定为 1.0。
2 <xsl:stylesheet version="1.0"
第 3 行到第 6 行列出了提交脚本中常用的所有命名空间映射。此示例中并未使用所有这些前缀,但列出未引用的命名空间映射并非错误。列出所有命名空间映射可防止在更高版本的脚本中使用这些映射时出现错误。
3 xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 4 xmlns:junos="http://xml.juniper.net/junos/*/junos" 5 xmlns:xnm="http://xml.juniper.net/xnm/1.1/xnm" 6 xmlns:jcs="http://xml.juniper.net/junos/commit-scripts/1.0">
第 7 行是 XSLT 导入语句。它从引用为.的文件中加载模板和变量 。/import/junos.xsl,作为 Junos OS 的一部分提供。 junos.xsl 文件包含一组命名模板,您可以在脚本中调用这些模板。 了解 Junos OS 自动化脚本中的命名模板中讨论了这些命名模板。
7 <xsl:import href="../import/junos.xsl"/>
第 8 行定义了一个与元素匹配 <configuration> 的模板,该元素是模板选择 <xsl:template match="/"> 的节点,包含在 junos.xsl 导入文件中。该 <xsl:template match="configuration"> 元素允许您从脚本中的所有 XPath 表达式中排除 /configuration/ 根元素,并以 Junos OS 最高层级开始 XPath 表达式。有关更多信息,请参见 XPath 概述。
8 <xsl:template match="configuration">
在第 8 行和第 9 行之间添加代码。
第 9 行关闭模板。
9 </xsl:template>
第 10 行关闭样式表和提交脚本。
10 </xsl:stylesheet>
提交脚本的 SLAX 样板
SLAX 提交脚本样板如下:
version 1.2;
ns junos = "http://xml.juniper.net/junos/*/junos";
ns xnm = "http://xml.juniper.net/xnm/1.1/xnm";
ns jcs = "http://xml.juniper.net/junos/commit-scripts/1.0";
import "../import/junos.xsl";
match configuration {
/*
* insert your code here
*/
}
Python 提交脚本样板
Python 提交脚本没有必需的样板,但它们必须导入脚本中使用的任何对象。Python 提交脚本可以导入以下内容:
Junos_Context字典 - 包含有关脚本执行环境的信息。Junos_Configurationobject - 包含继承后候选配置。jcslibrary - 使脚本能够在脚本中使用 Junos OS 扩展函数和 Junos OS 命名模板功能。jnpr.junosmodule and classes - 使脚本能够使用 Junos PyEZ。
例如:
from junos import Junos_Context from junos import Junos_Configuration from jnpr.junos import Device import jcs if __name__ == '__main__':
Python 自动化脚本不需要在脚本开头包含解释器指令行 (#!/usr/bin/env python)。但是,如果存在,程序仍将正确执行。