Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

示例:使用 Commit 脚本宏创建自定义配置语法

Junos OS 配置可包含 apply-macro 带有自定义配置语法的语句。该语句本身 apply-macro 对设备没有操作影响。提交脚本宏处理自定义配置语法,并将其扩展为标准 Junos OS 配置语句,然后作为持久或瞬时更改添加。此示例演示了如何使用提交脚本宏来检查 apply-macro 语句并生成 Junos OS 配置语句。

要求

此示例使用以下硬件和软件组件:

  • 运行 Junos OS 的设备。

  • 使用 Python 脚本时,Junos OS 版本 16.1R3 或更高版本。

概述和提交脚本

表 1 显示了包含自定义语法的宏,以及对标准 Junos OS 命令行界面 (CLI) 语法的相应扩展。

表 1:宏示例和 Junos OS CLI 扩展

自定义宏语法

扩展 Junos OS CLI 语法

protocols {
    mpls {
        apply-macro blue-type-lsp {
            10.1.1.1;
            10.2.2.2;
            10.3.3.3;
            10.4.4.4;
            color blue;
            group-value 0;
        }
    }
}
protocols {
    mpls {
        admin-groups {
            blue 0;
        }
        label-switched-path blue-lsp-10.1.1.1 {
            to 10.1.1.1;
            admin-group include-any blue;
        }
        label-switched-path blue-lsp-10.2.2.2 {
            to 10.2.2.2;
            admin-group include-any blue;
        }
        label-switched-path blue-lsp-10.3.3.3 {
            to 10.3.3.3;
            admin-group include-any blue;
        }
        label-switched-path blue-lsp-10.4.4.4 {
            to 10.4.4.4;
            admin-group include-any blue;
        }
    }
}

在此示例中,Junos OS 管理 (mgd) 进程会检查配置,查找apply-macro语句。对于在层次结构级别中[edit protocols mpls]包含参数的每个apply-macro语句color,脚本都会生成瞬时更改,使用语句中apply-macro提供的数据将宏扩展为 LSP 的标准 Junos OS 管理组。

对于此工作示例,必须在层次结构级别中包含一个apply-macro语句,其中包含一组地址、一个color和一个group-value[edit protocols mpls]参数。提交脚本将每个地址转换为 LSP 配置,而脚本将该参数转换color为管理组。

以下是在 表 1 中扩展宏的提交脚本说明以及脚本的逐行说明:

XSLT 语法

第 1 行到 8 行(以及第 43 行和第 44 行)是您在每个 XSLT 提交脚本中都包含的样板。为了简洁起见,此处省略了第 1 至 8 行。

第 9 行将层次结构级别分配 [edit protocols mpls] 给一个称为的 mpls变量。

第 10 行在[edit protocols mpls]层级选择包含color参数的每个apply-macro语句。表 1 中的样本配置仅包含一个apply-macro语句。因此,此<xsl:for-each>编程指令仅生效一次。

第 11 行将参数的 color 值(在此情况下 blue)分配给称为 的 color变量。

第 12 行将参数的 group-value 值(在此情况下 0)分配给称为的 group-value变量。

第 13 行到 15 行在 [edit protocols mpls] 层次结构级别生成瞬时更改。

第 16 行到 23 行将语句添加到 admin-groups 配置中,并将变量的 color 值分配给组名称,并将变量的 group-value 值分配给组值。

生成的配置语句如下:

第 24 行选择未为其分配值的每个参数的名称,在这种情况下,这些参数是四个 IP 地址。此 <xsl:for-each> 编程说明使用宏的递归,并依次选择每个 IP 地址。每个 colorgroup-value 参数都有一个分配的值(blue0分别),因此此行不适用于它们。

第 25 行在配置中添加语 label-switched-path 句。

第 26 行至第 28 行分配 label-switched-path 一个将变量的值 color 、文本 -lsp 和当前 IP 地址(当前由第 24 行选定)(表示为 “ ) .的名称。

第 29 行将语句添加到 to 配置中,并设置其值到当前由第 24 行选择的 IP 地址。

第 30 行到 34 行将语句添加到 admin-group include-any 配置中,并将其值设置为变量的 color 值。

生成的配置语句(一次通过)如下所示:

第 35 行到 42 行是关闭标记。

SLAX 语法

等效的 SLAX 脚本是:

Python 语法

以下 Python 语法可生成相同的配置更改:

有关此示例的详细信息,请参阅 示例:为 LSP 配置管理组

配置

程序

逐步过程

要下载、启用和测试脚本:

  1. 将脚本复制到文本文件中,命名文件 lsp-admin.xsllsp-admin.slaxlsp-admin.py ,并将其复制到设备上的 /var/db/scripts/commit 目录。

    注意:

    未签名的 Python 脚本必须归 Junos OS super-user 登录类中的 root 或用户所有,并且只有文件所有者才能为该文件写入许可。

  2. 如果脚本写在 Python 中,则允许执行未签名的 Python 脚本。

    注意:

    将语句配置 language python3 为使用 Python 3 执行 Python 脚本,或将 language python 语句配置为使用 Python 2.7 执行 Python 脚本。有关更多信息,请参阅 语言

  3. 选择以下测试配置部分,然后按 Ctrl+c 将其复制到剪贴板。如果您使用脚本的 SLAX 或 Python 版本,请在 [edit system scripts commit file] 层次结构级别更新文件名。

  4. 在配置模式下 load merge terminal ,发出 命令将部分合并到设备配置中。

    1. 出现提示时,使用鼠标和粘贴图标粘贴剪贴板的内容。

    2. 按 Enter。

    3. 按下 Ctrl+d。

  5. 提交配置。

验证

验证脚本执行

目的

验证脚本是否按预期运行。

行动

要显示脚本创建的配置语句,请发出 show protocols mpls | display commit-scripts 命令。