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:

如果在某个 overridemerge 操作中指定包含 replace: 标记的文件或类型文本, replace: 则会忽略标记。在这种情况下, overridemerge 操作优先,并执行。

如果您正在执行操作replace,并且您指定的文件缺少replace:标记,则replace操作将作为merge操作运行。如果您键入的文本缺少replace:标记,则该replace操作也作为merge操作运行。如果您正在运行自动化脚本,并且无法事先知道脚本是需要执行replace操作还是merge操作,则此信息可能有用。脚本可使用操作replace来覆盖任一案例。

load merge 操作将配置从保存的文件或终端与现有候选配置合并。如果要添加新的配置部分,则此信息很有用。例如,假设您将 BGP 配置 [edit protocols] 添加到层次结构级别,而之前没有 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 结束操作。如果补丁输入为现有语句指定了不同的值,则补丁输入将覆盖现有语句。

要在未指定完整层次结构级别的情况下使用 mergereplacesetupdate 选项,请指定 relative 选项。此选项将传入配置加载至配置层次结构中的当前编辑点。

例子:

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

要将配置文件从另一个网络系统复制到本地路由器,您可以使用 SSH 和 Telnet 实用程序,如 CLI Explorer 中所述。

注意:

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

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

Junos OS Evolved 配置数据和操作命令输出可能包含非 ASCII 字符,该字符在 7 位 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.4, 0x01020304, 128.8.1, 128.8

Sample translations:

1.2.3变成1.2.3.00x01020304 1.2.3.40x0102030.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/320x010203041.2.3.4/320.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.5647.12.34.56 47.1234.564712.345647.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.1128.8 128.8.0.00x0102030.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:使用 set 选项 Using the set Option

上传配置文件

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

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

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

    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 类型] >Cursor 在这里。在此处粘贴剪贴板的内容<
  9. 按 Enter。
  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 语句时,根据配置的大小和列表数量,解析配置时,负载操作可能需要更长的时间。因此,对于具有许多列表的大型配置或配置,建议使用 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 配置文件加载为未编码的列表条目,并且设备在解析配置时处理列表条目。