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 $junos-context 文件的 SLAX 和 XSLT 脚本可以使用节点集全局变量来参考此信息。 junos.xsl 导入文件还声明多个预定义的全局参数,使脚本能够更轻松地引用此信息的子集。Python 脚本可通过必须在 junos.Junos_Context 脚本中导入的词汇表引用此信息。

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

XSLT 语法

SLAX 语法

Python

要引用 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

执行脚本的文件名

test.slax

$user

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

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

SLAX 语法:

XSLT 语法:

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

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

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

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

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

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

表 2: 全局$junos环境 可用于 SLAX 和 XSLT 脚本

父节点

节点

描述

示例内容

<junos上下文>

<>

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

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

<主机名>

本地设备的主机名

东京

<本地>

执行脚本时的本地时间

2010 年 12 月 10 日 11:42:21

<本地时间-iso>

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

2010-12-10 11:42:21(PST)

<pid>

规范进程 ID

5257

<生产>

本地设备的型号

m10i

<re-master/>

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

 

<路由引擎-名称>

路由引擎执行脚本的一个工具

re0

<规范类型>

要执行的脚本类型

操作

<tty>

用户会话的 TTY

/dev/ttyp1

<junos上下文><环境信息>

<类名称>

执行脚本的用户的登录类

超级用户

<login-name>

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

j工

<一>

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

2999

<>

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

<junos上下文><上下文>

(仅操作脚本)

<via-url>

使用 命令执行远程操作脚本时包含的空 op url 元素

 

<与上下文><上下文>

(仅提交脚本)

<启动/>

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

 

<检查/>

执行 时包括的 commit check 空元素

 

<意见>

有关提交的用户评论

提交修复转发问题

<确认/>

执行 时包括的 commit confirmed 空元素

 

<同步/>

执行 时包括的 commit synchronize 空元素

 

<base-path/>

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

 

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

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

以下示例输出显示 Junos_Context 在本地执行的 op 脚本的词汇表。请注意,op 脚本输入包含密钥 op-context ,此方案为空。

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

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