Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

加载配置文件

在设备上加载配置文件有助于加载网络中许多设备通用的配置文件部分。

从文件或终端加载配置的示例

您可以创建包含瞻博网络设备配置数据的文件,将该文件复制到本地设备,然后将该文件加载到 CLI 中。加载文件后,您可以提交该文件以激活设备上的配置,也可以使用 CLI 以交互方式编辑配置并在以后提交配置。

您还可以在终端上键入时创建配置,然后加载配置。当您剪切配置的现有部分并将其粘贴到配置中的其他位置时,从终端加载配置非常有用。

要加载位于设备上的现有配置文件,请使用 load 配置模式命令:

要从终端加载配置,请使用以下版本的 load 配置模式命令。按 Ctrl-d 结束输入。

要替换整个配置,请在层次结构的任何级别指定 override 选项。操作会将 load override 当前候选配置完全替换为要加载的文件。因此,如果保存了完整配置,则使用此选项。

操作会 override 丢弃当前的候选配置,并将配置 filename 加载到您在终端上键入的配置中。使用该 override 选项并提交配置时,所有系统进程都会重新分析配置。

要替换部分配置,请指定该 replace 选项。该 load replace 操作将查找 replace: 您添加到加载文件中的标记。然后,该操作会将候选配置的这些部分替换为标记后指定的任何部分。当您想要更好地控制正在更改的内容时,这很有用。要使此操作正常工作,您必须 replace: 在终端键入的文件或配置中包含标记。软件将搜索 replace: 标记,删除同名的现有语句(如果有),并用传入的配置替换它们。如果不存在同名语句,则该操作会将 replace 标有标记的 replace: 语句添加到配置中。

如果在或操作中override指定包含标记的文件或键入文本replace:,则会忽略这些replace:merge标记。在这种情况下,overridemerge操作优先并被执行。

如果您正在执行某个replace操作,并且您指定的文件缺少replace:标记,则该操作将replace作为操作运行mergereplace如果您键入的文本缺少replace:标记,该操作也会作为操作运行merge。如果您正在运行自动脚本,并且无法提前知道脚本需要执行replace操作还是merge操作,则此信息可能很有用。脚本可以使用该replace操作来涵盖任一情况。

load merge 操作会将保存的文件或终端中的配置与现有的候选配置合并。如果要添加新的配置节,此信息非常有用。例如,假设您要将 [edit protocols] BGP 配置添加到之前没有 BGP 配置的层次结构级别。您可以使用该 load merge 操作将传入配置与现有候选配置组合在一起。如果现有配置和传入配置包含冲突的语句,则传入配置中的语句将覆盖现有配置中的语句。

要仅替换配置中已更改的部分,请在层次结构的任何级别指定 update 该选项。该 load update 操作将比较候选配置和新配置数据。此操作仅更改候选配置中与新配置不同的部分。例如,如果存在现有的 BGP 配置,并且您正在加载的文件以某种方式更改了该配置,则可以使用此操作。

mergeoverrideupdate选项支持以 JavaScript 对象表示法 (JSON) 格式加载配置数据。加载使用 JSON 格式的配置数据时,必须在命令中指定json选项。要加载包含无序列表条目(即列表键不一定是列表条目中的第一个元素的列表条目)的 JSON 配置数据,请参阅使用无序列表条目加载 JSON 配置数据

要使用修补程序文件更改部分配置,请指定 patch 该选项。该 load patch 操作将加载包含配置更改的文件或终端输入。首先,在已进行配置更改的设备上,键入 show | compare 命令以输出两个配置之间的差异。然后,您可以在另一台设备上加载差异。该 load patch 命令的优点是,它使您不必在将不同层次结构级别的代码片段加载到目标设备之前将其复制到文本文件中。如果您使用相同的选项配置多个设备,这可能是一个有用的节省时间。例如,假设您在路由器 1 上配置路由策略,并希望在路由器 2、路由器 3 和路由器 4 上复制该策略配置。您可以使用该 load patch 操作。

在此示例中,首先运行 show | compare 命令。

例:

继续此示例,将命令的 show | compare 输出复制到剪贴板,确保包含层次结构级别。在路由器 2、路由器 3 和路由器 4 上,键入 load patch terminal 并粘贴输出。然后按 Enter 并按 Ctrl-d 结束操作。如果修补程序输入为现有语句指定了不同的值,则修补程序输入将覆盖现有语句。

merge要使用 、 replacesetupdate选项而不指定完整层次结构级别,请指定该relative选项。此选项加载相对于配置层次结构中当前编辑点的传入配置。

例:

要加载包含 set 配置模式命令的配置,请指定该 set 选项。此选项在配置指令存储在文件或终端中时逐行执行。这些指令可以包含任何配置模式命令,如 seteditexittop

要将配置文件从其他网络系统复制到本地路由器,可以使用 SSH 和 Telnet 实用程序,如 CLI 资源管理器中所述。

注意:

如果您在通用标准环境中工作,则每当更改属性(例如,密码更改或 RADIUS 共享密钥更改)时,都会 secret 创建系统日志消息。在以下配置加载操作期间记录这些更改:

字符编码在瞻博网络设备上的工作原理

Junos OS 演化版配置数据和操作命令输出可能包含 7 位 ASCII 字符集之外的非 ASCII 字符。当以特定格式或在某种类型的会话中显示操作或配置数据时,软件会对这些字符进行转义和编码。软件使用等效的 UTF-8 十进制字符引用对字符进行转义或编码。

CLI 尝试在以文本、集合或 JSON 格式生成的配置数据中显示任何非 ASCII 字符。CLI 还会尝试在以文本格式生成的命令输出中显示这些字符。在例外情况下,CLI 会改为显示 UTF-8 十进制字符引用。(例外情况包括 XML 格式的配置数据和 XML 或 JSON 格式的命令输出,)在 NETCONF 和 Junos XML 协议会话中,如果请求包含非 ASCII 字符的配置数据或命令输出,则会看到类似的结果。在这种情况下,服务器为所有格式的这些字符返回等效的 UTF-8 十进制字符引用。

例如,假设设备上配置了以下用户帐户,其中包含带有波形符 (ñ) 的拉丁小写字母 n。

以文本格式显示生成的配置时,CLI 将打印相应的字符。

在 CLI 中以 XML 格式显示生成的配置时,ñ 字符将映射到其等效的 UTF-8 十进制字符引用 ñ。如果在 NETCONF 或 Junos XML 协议会话中以任何格式显示配置,则会出现相同的结果。

将配置数据加载到设备上时,可以使用等效的 UTF-8 十进制字符引用来加载非 ASCII 字符。

关于指定语句和标识符

本主题提供有关 CLI 容器语句和叶语句的详细信息,以便您知道如何在创建 ASCII 配置文件时必须指定它们。本主题还介绍了 CLI 如何执行类型检查以验证您输入的数据格式是否正确。

指定语句

语句的显示方式有两种,要么带大括号 ({ }),要么不带:

  • 语句名称和标识符,将一个或多个较低级别的语句括在大括号中:

  • 语句名称、标识符和单个标识符:

statement-name 语句的名称。是唯一 identifier-name 标识语句实例的名称或其他字符串。当可以在配置中多次指定语句时,可以使用标识符。

指定语句时,必须指定语句名称和/或标识符名称,具体取决于语句层次结构。

您可以通过以下方式之一指定标识符:

  • identifier-name— 当 identifier-name 语句中可以多次指定语句时,用于唯一标识语句的关键字。

  • identifier-name value- 是 identifier-name 关键字,是 value 必需选项变量。

  • identifier-name [value1 value2 value3 ...]—是 identifier-name 接受多个值的关键字。指定一组值时,括号是必需的;但是,当您只指定一个值时,它们是可选的。

以下示例说明了如何在配置中指定语句和标识符:

创建 ASCII 配置文件时,请指定语句和标识符。每个语句都有一个首选样式,CLI 在显示配置以响应配置 show 模式命令时会使用该样式。您可以通过以下方式之一指定语句和标识符:

  • 语句后跟标识符:

  • 语句后跟用大括号括起来的标识符:

  • 对于某些重复标识符,您可以对所有语句使用一组大括号:

执行 CLI 类型检查

指定标识符和值时,CLI 将执行类型检查以验证您输入的数据格式是否正确。例如,对于必须在其中指定 IP 地址的语句,CLI 要求您以有效格式输入地址。否则,将显示一条错误消息,指示您需要键入的内容。列出了 CLI 检查的数据类型。以下是 CLI 配置输入类型:

表 1: CLI 配置输入类型

数据类型

格式

例子

物理接口名称(在 [edit interfaces] 层次结构中使用)

type-fpc/pic/port

Correct: et-0/0/1

Incorrect: et-0

完整接口名称

type-fpc/pic/port<:channel>.logical

Correct: et-0/0/1.0

Incorrect: et-0/0/1

完整或缩写的接口名称(用于 [edit interfaces] 层次结构以外的地方)

type-<fpc</pic/port>><<: channel>.logical>

Correct: et, et-1, et-1/2/3:4.5

IP地址

0xhex-bytesoctet<. octet<.octet. <octet>>>

Correct:1.2.3.40x01020304128.8.1128.8

Sample translations:

1.2.3变成 1.2.3.0变成1.2.3.40x0102030x010203040.1.2.3

IP 地址(目标前缀)和前缀长度

0xhex-bytes</length>octet<octet <octet.<octet>>></length>

Correct: 10/8, 128.8/16, 1.2.3.4/32, 1.2.3.4

Sample translations:

1.2.3变成 1.2.3.0/320x01020304变成 1.2.3.4/32变成0.1.2.3/32default0x0102030.0.0.0/0

国际标准化组织 (ISO) 地址

hex-nibble<hex-nibble ...>

Correct:47.1234.2345.3456.00, 47123423453456.00, 47.12.34.23.45.34.56.00

Sample translations:

47123456变成 47.1234.56变成47.1234.564712.345647.12.34.5647.1234.56

OSPF 区域标识符 (ID)

0xhex-bytesoctet<.octet<.octet.< octet >>> decimal-number

Correct: 54, 0.0.0.54, 0x01020304, 1.2.3.4

Sample translations:

54 成为 0.0.0.54

257变成 0.0.1.1变成128.8.0.00x010203128.80.1.2.3

关于从文件加载配置

以下示例演示了从文件加载配置的过程。

表 2:覆盖当前配置

当前配置:

interfaces {
 Io0 {
  unit 0 {
   family inet {
    address 127.0.0.1;
   }
  }
 }
 et-3/0/0 {
  unit 0 {
   family inet {
    address 204.69.248.181/28;
   }
  }
 }
}

文件内容:

interfaces {
replace:
 et-3/0/0 {
  unit 0 {
   family inet {
    address 10.0.0.1/8;
   }
  }
 }
}
load override
------------>

新内容:

interfaces {
 et-3/0/0 {
  unit 0 {
   family inet {
    address 10.0.0.1/8;
   }
  }
 }
}
表 3:使用替换选项

当前配置:

interfaces {
 Io0 {
  unit 0 {
   family inet {
    address 127.0.0.1;
   }
  }
 }
 et-3/0/0 {
  unit 0 {
   family inet {
    address 204.69.248.181/28;
   }
  }
 }
}

文件内容:

interfaces {
replace:
 et-3/0/0 {
  unit 0 {
   family inet {
    address 10.0.0.1/8;
   }
  }
 }
}
load replace
------------>

新内容:

interfaces {
 Io0 {
  unit 0 {
   family inet {
    address 127.0.0.1;
   }
  }
 }
et-3/0/0 {
 unit 0 {
  family inet {
   address 10.0.0.1/8;
   }
  }
 }
}
表 4:使用合并选项

当前配置:

interfaces {
 Io0 {
  unit 0 {
   family inet {
    address 127.0.0.1;
   }
  }
 }
 et-3/0/0 {
  unit 0 {
   family inet {
    address 204.69.248.181/28;
   }
  }
 }
}

文件内容:

interfaces {
replace:
 et-3/0/0 {
  unit 0 {
   family inet {
    address 10.0.0.1/8;
   }
  }
 }
}
load merge
------------>

新内容:

interfaces {
 Io0 {
  unit 0 {
   family inet {
    address 127.0.0.1;
   }
  }
 }
et-3/0/0 {
 unit 0 {
  family inet {
   address 10.0.0.1/8;
   address 204.69.248.181/28;
   }
  }
 }
}
表 5:使用修补程序文件

当前配置:

interfaces {
 fxp0 {
  unit 0 {
   family inet {
    address 192.168.6.193/24;
   }
  }
 }
 Io0 {
  unit 0 {
   family inet {
    address 127.0.0.1/32;
   }
  }
 }
}

文件内容:

{edit interfaces}
+ et-3/0/0 {
+  unit 0 {
+   family inet {
+    address 10.0.0.1/8;
+   }
+  }
+ }
load patch
------------>

新内容:

interfaces {
 et-0/0/0 {
  unit 0 {
   family inet {
    address 10.0.0.1/8;
   }
  }
 }
 fxp0 {
  unit 0 {
   family inet {
    address 192.168.6.193/24;
   }
  }
 }
Io0 {
 unit 0 {
  family inet {
   address 127.0.0.1/32;
   }
  }
 }
}
图1:使用设置的选项 Using the set Option

上传配置文件

您可以在本地系统上创建配置文件,将该文件复制到设备,然后将该文件加载到 CLI 中。加载配置文件后,可以提交它以激活设备上的配置。您还可以使用 CLI 以交互方式编辑配置,并在以后提交。

要从本地系统上传配置文件:

  1. 使用文本编辑器(如记事本)创建配置文件,确保配置文件的语法正确。
  2. 在配置文本文件中,包括以下一个或多个选项,以便在加载文件时执行所需的操作。
    表 6:加载命令的选项
    选项 说明

    merge

    将当前活动配置与您指定的文件名中的配置或在终端窗口中键入的配置相结合。 merge 向现有配置添加新部分时,操作非常有用。如果活动配置和传入配置包含冲突的语句,则传入配置中的语句将覆盖活动配置中的语句。

    override

    放弃当前的候选配置。加载您指定的文件名中的配置或您在终端上键入的配置。使用该 override 选项并提交配置时,所有系统进程都会重新分析配置。您可以在层次结构的任何级别使用该 override 选项。

    replace

    搜索 replace 标签,删除同名的现有语句(如果有),并将现有语句替换为传入配置。如果不存在同名语句,该操作会将 replace 标有标记的 replace 语句添加到活动配置中。

    注意:

    要使此操作正常工作,您必须 replace 在文本文件或在终端输入的配置中包含标签。

  3. 按 Ctrl+a 选择配置文件中的所有文本。
  4. 按 Ctrl+c 将配置文本文件的内容复制到剪贴板。
  5. 使用您的用户名和密码登录设备。
  6. 进入配置模式:user@host> configure

    [编辑] user@host#

  7. 加载配置文件:[编辑] user@host# load merge terminal
  8. 在光标处,使用鼠标和粘贴图标粘贴剪贴板的内容:[编辑] user@host# load merge terminal [在新行处键入 ^D 以结束输入] >光标在这里。将剪贴板的内容粘贴到此处<
  9. 按回车键。
  10. 按 Ctrl+d 设置文件结束标记。

要在提交配置之前查看配置步骤的结果,请在用户提示符处键入 show 命令。

要将这些更改提交到活动配置,请在用户提示符处键入 commit 命令。您还可以使用 CLI 以交互方式编辑配置,并在以后提交。

加载包含无序列表条目的 JSON 配置数据

Junos 架构将某些配置对象定义为列表。在 JSON 配置数据中,列表实例编码为名称/数组对,数组元素是 JSON 对象。通常,JSON 编码列表条目中成员的顺序是任意的,因为 JSON 对象基本上是成员的无序集合。但是,Junos 架构要求列表键位于列表条目中的任何其他同级之前,并按架构指定的顺序显示。

例如, user 层次结构级别的对象 [edit system login] 是一个列表,其中 name 是唯一标识每个用户的列表键。

在以下示例配置数据中,列表键 (name) 是每个用户的第一个元素。默认情况下,加载 JSON 配置数据时,Junos 设备要求列表键位于列表条目中的任何其他同级之前,并按架构指定的顺序显示。

Junos 设备提供两个选项来加载包含无序列表条目的 JSON 配置数据,即列表键不一定是第一个元素的列表条目。

  • request system convert-json-configuration在设备上加载数据之前,使用操作模式命令生成具有有序列表条目的 JSON 配置数据。

  • reorder-list-keys[edit system configuration input format json]层次结构级别配置语句。配置语句后,您可以加载包含无序列表条目的 JSON 配置数据,设备会在加载操作期间根据 Junos 架构的要求对列表键重新排序。

注意:

配置语句 reorder-list-keys 时,load 操作可能需要更长的时间来解析配置,具体取决于配置的大小和列表的数量。因此,对于大型配置或具有许多列表的配置,我们建议使用 request system convert-json-configuration 命令而不是 reorder-list-keys 语句。

例如,假设 user-data.json 该文件包含以下 JSON 配置。如果尝试加载配置,设备将发出加载 admin2 错误,因为列表键 name 不是该列表条目中的第一个元素。

如果将 request system convert-json-configuration 命令与前一个文件一起使用作为输入,则该命令会生成指定的输出文件,其中包含 Junos 设备可在加载操作期间解析的 JSON 配置数据。

或者,您可以配置 reorder-list-keys 配置语句。

配置语句后,您可以使用无序列表条目加载原始 JSON 配置文件,设备在解析配置时会处理列表条目。