Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Junos OS 自动化脚本中的全局参数和变量

Junos OS 会在执行自动化脚本时自动为其提供输入。脚本可以引用此输入,其中包括有关脚本执行环境的设备特定信息,例如设备主机名、脚本类型和执行脚本的用户。此信息对于创建响应各种复杂方案的脚本非常有用。

导入 junos.xsl 文件的 SLAX 和 XSLT 脚本可以使用全局变量(节点集)引用 $junos-context 此信息。 junos.xsl 导入文件还声明了几个预定义的全局参数,使脚本能够更轻松地引用此信息的子集。Python 脚本可以通过字典引用 junos.Junos_Context 此信息,必须将其导入到脚本中。

要在 SLAX 和 XSLT 脚本中使用预定义的参数或全局变量,必须通过将标记包含在 XSLT 脚本的样式表声明中,或者通过将语句包含在 import <xsl:import> SLAX 脚本中并指定 junos.xsl 文件位置来导入 junos.xsl 文件,如以下示例代码所示:

XSLT 语法

SLAX 语法

Python

要引用 Python 脚本中的信息,请导入 Junos_Context 字典。

以下各节详细介绍了脚本输入:

SLAX 和 XSLT 脚本中可用的全局参数

有几个预定义的全局参数可用于导入 junos.xsl 文件的 SLAX 和 XSLT 自动化脚本。这些参数提供有关 Junos OS 环境的信息。 表 1 介绍了内置参数。

表 1: SLAX 和 XSLT 脚本中可用的预定义参数

名字

描述

例子

$hostname

本地设备的主机名

东京

$localtime

执行脚本的本地时间

星期五 12月 10 11:42:21 2010

$localtime-异构

执行脚本时的本地时间,ISO 格式

2010-12-10 11:42:21 PST

$product

本地设备的型号

M10i

$script

执行脚本的文件名

test.slax

$user

执行脚本的用户的本地名称

预定义的全局参数在 junos.xsl 文件中声明。您无需在脚本中声明这些参数即可使用它们。通过在参数名称前面加上美元符号 ($),访问脚本中全局参数的值,如以下示例所示:

SLAX 语法:

XSLT 语法:

自动化脚本中可用的全局变量

提交、事件和操作脚本可以访问在执行时提供给脚本的特定环境信息。要访问此信息,Python 脚本必须导入并引用字典,导入 junos.xsl 文件的 SLAX 和 XSLT 脚本可以引用$junos-contextjunos.Junos_Context全局变量。 并Junos_Context包含相同的信息,但采用适合相应脚本语言的格式。 $junos-context

$junos-context 变量是一个节点集,其中包含 <junos-context> 节点和以下层次结构,该层次结构是所有脚本的源树通用的并嵌入其中:

此外,根据执行的脚本类型,可以使用特定于脚本的信息。对于操作脚本,该 <op-context> 元素也包含在提供给 操作脚本的源代码树中:

对于提交脚本,该 <commit-context> 元素也包含在提供给提交脚本的源代码树中:

表 2 标识了变量节点集的每个 $junos-context 节点,提供了节点的简要说明,并给出了未作为空标记输入到脚本的任何元素的值示例。

表 2: 可用于 SLAX 和 XSLT 脚本的全局变量$junos上下文

父节点

节点

描述

示例内容

<junos-context>

<机箱>

指定是在 路由矩阵的组件、 根系统域 (RSD) 还是 受保护系统域 (PSD) 上执行脚本

scc, lcc (TX Matrix)psd, rsd (JCS)其他

<主机名>

本地设备的主机名

东京

<当地时间>

执行脚本的本地时间

星期五 12月 10 11:42:21 2010

<localtime-iso>

执行脚本时的本地时间,ISO 格式

2010-12-10 11:42:21 PST

<pid>

脚本进程 ID

5257

<产品>

本地设备的型号

M10i

<重新掌握/>

如果在主路由引擎上执行脚本,则包含空元素

 

<路由引擎名称>

执行脚本的路由引擎

re0

<脚本类型>

正在执行的脚本类型

操作

<啧啧>

用户会话的 TTY

/dev/ttyp1

<junos-context>    <user-context>

<类名>

执行脚本的用户的登录类

超级用户

<登录名>

执行脚本的用户的登录名。对于 AAA 访问,这是 RADIUS/TACACS 用户名。

杰史密斯

<uid>

执行设备配置中定义的脚本的用户的用户 ID 号

2999

<用户>

执行脚本的用户的本地名称。Junos OS 使用本地名称进行身份验证。它可能与用于 AAA 身份验证的不同 login-name

<junos-context>    <op-context>

(仅限操作脚本)

<via-url>

如果使用命令执行 op url 远程操作脚本,则包含空元素

 

<junos-context>    <commit-context>

(仅限提交脚本)

<commit-boot/>

在引导时提交时包含空元素

 

<提交检查/>

执行 时 commit check 包含的空元素

 

<提交评论>

用户对提交的评论

承诺修复转发问题

<提交确认/>

执行 时 commit confirmed 包含的空元素

 

<提交同步/>

执行 时 commit synchronize 包含的空元素

 

<数据库路径/>

指定会话的预继承候选配置位置的元素。对于正常配置会话,元素的值是普通候选数据库的位置。对于专用配置会话,元素的值是专用候选数据库的位置。当属性<get-configuration>database-path为此值时,提交脚本将检索相应的预继承候选配置。

 

$junos-context变量是一个节点集。因此,可以通过包含正确的 XPath 表达式来访问整个脚本中的子元素。如果在初始启动期间执行提交,则以下 SLAX 提交脚本会将消息写入系统日志文件。为消息指定的设施daemon为 ,严重性值为 info。有关更多信息,请参阅 syslog()。

Python 脚本必须从模块导入Junos_Contextjunos字典才能访问提供给脚本的环境信息。字典中Junos_Context键的名称与表 2 中概述的$junos-context节点名称相同。具有嵌套在节点下的子元素(如 、)commit-context的节点,并映射到 中的Junos_Context项,其中键是节点名称,值是节点子元素的junos-contextop-context字典。user-context例如:

以下示例输出显示 Junos_Context 在本地执行的操作脚本的字典。请注意,操作脚本输入包含键 op-context ,在此方案中为空。

以下示例输出显示在 Junos_Context 操作期间 commit check 执行的提交脚本的字典。请注意,提交脚本输入包含 commit-context 密钥。

若要访问字典中的各个值,请指定键名称。例如: