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

XSLT 语法

SLAX 语法

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

以下部分详细介绍了脚本输入:

SLAX 和 XSLT 脚本中提供的全局参数

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

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

名字

描述

$hostname

本地设备的主机名

东京

$localtime

执行脚本时的当地时间

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

$localtime-iso

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

2010-12-10 11:42:21 PST

$product

本地设备的型号

M10i

$script

执行脚本的文件名

测试.slax

$user

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

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

SLAX 语法:

XSLT 语法:

自动化脚本中提供的全局变量

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

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

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

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

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

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

父节点

节点

描述

示例内容

<junos-context>

<机箱>

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

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

<主机名>

本地设备的主机名

东京

<当地时间>

执行脚本时的当地时间

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

<localtime-iso>

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

2010-12-10 11:42:21 PST

<pid>

cscript 进程 ID

5257

<产品>

本地设备的型号

M10i

<re-master/>

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

 

<routing-engine-name>

执行脚本的路由引擎

RE0

<脚本类型>

正在执行的脚本类型

运维

<tty>

用户会话的 TTY

/dev/ttyp1

<junos-context><user-context>

<类名>

执行脚本的用户的登录名类

超级用户

<登录名>

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

JSMITH公司

<uid>

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

2999

<用户>

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

<junos-context> <op-context>

(仅限 op 脚本)

<通过网址>

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

 

<junos-context><commit-context>

(仅限提交脚本)

<commit-boot/>

在启动时提交时包含空元素

 

<commit-check/>

执行 a commit check 时包含空元素

 

<提交评论>

用户对提交的评论

承诺修复转发问题

<提交确认/>

执行 a commit confirmed 时包含空元素

 

<commit-sync/>

执行 a commit synchronize 时包含空元素

 

<database-path/>

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

 

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

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

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

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

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