Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

在 Junos OS 自动化脚本中使用扩展函数

Junos OS 提供了可用于提交、操作、事件和 SNMP 脚本的扩展功能,以便在运行 Junos OS 的设备上更轻松地完成脚本任务。以下各节概述了如何导入和使用不同脚本语言的扩展函数:

在 SLAX 和 XSLT 脚本中使用扩展函数

若要在 SLAX 和 XSLT 脚本中使用扩展函数,脚本必须在样式表声明中声明相应的命名空间 统一资源标识符 (URI)。Junos OS 扩展函数具有特定于运行 Junos OS 的设备的功能,在命名空间中使用关联的 URI http://xml.juniper.net/junos/commit-scripts/1.0定义。SLAX 扩展函数在具有关联 URI http://xml.libslax.org/slax的命名空间中定义。

SLAX 和 XSLT 脚本通常将 jcs or slax 前缀映射到其各自的 URI,以避免与标准 XSLT 函数和用户定义模板的名称冲突。然后,脚本使用适当的前缀限定扩展函数,该前缀在处理过程中扩展为其关联的 URI 引用。

例如,以下 SLAX 命名空间语句将 jcs 前缀映射到命名空间 URI,该 URI 定义自动化脚本中使用的 Junos OS 扩展函数:

以下 SLAX 命名空间语句将 slax 前缀映射到定义 SLAX 扩展函数的命名空间 URI:

若要在 SLAX 或 XSLT 脚本中调用扩展函数,请包含任何必需的变量声明,根据需要使用 jcs:function-name()slax:function-name() 调用该函数,并传递任何必需或可选参数。参数必须按函数定义指定的精确顺序传递到函数中。这与模板不同,模板中的参数按名称分配,可以按任何顺序显示。扩展函数的返回值必须始终分配给变量或指定为输出。

以下示例将 jcs 前缀映射到 URI http://xml.juniper.net/junos/commit-scripts/1.0标识的命名空间。然后,该脚本使用一个参数调用该 jcs:invoke() 函数。

XSLT 语法

SLAX 语法

以下示例将 slax 前缀映射到 URI http://xml.libslax.org/slax标识的命名空间。然后,该脚本使用一个字符串参数调用该 slax:get-input() 函数。

SLAX 语法

在 Python 脚本中使用扩展函数

导入 jcs 模块的 Python 自动化脚本可以使用受支持的 Junos OS 和 SLAX 扩展函数的 Python 版本。要确定 Python 脚本支持哪些扩展函数,请参阅 了解 Junos OS 自动化脚本中的扩展函数

要在 Python 脚本中调用等效扩展函数,请首先包含 import jcs 语句和任何必需的变量声明。然后使用 调用 jcs.function_name()函数,并传递任何必需或可选参数。请注意,在 Python 脚本中,扩展函数名称必须使用下划线而不是连字符。例如:

Python 语法