Arquivos de configuração de carregamento
Carregar arquivos de configuração no dispositivo é útil para carregar partes de arquivos de configuração que podem ser comuns em muitos dispositivos dentro de uma rede.
Exemplos para carregar uma configuração de um arquivo ou terminal
Você pode criar um arquivo contendo dados de configuração para um dispositivo da Juniper Networks, copiar o arquivo para o dispositivo local e, em seguida, carregar o arquivo para a CLI. Depois de carregar o arquivo, você pode empenhá-lo para ativar a configuração no dispositivo ou editar a configuração de maneira interativa usando a CLI e comprometer a configuração posteriormente.
Você também pode criar uma configuração enquanto digita no terminal e depois carregar a configuração. Carregar uma configuração do terminal é útil quando você está cortando partes existentes da configuração e colando-as em outros lugares da configuração.
Para carregar um arquivo de configuração existente localizado no dispositivo, você usa o comando do load
modo de configuração:
[edit] user@host# load (factory-default | merge | override | patch | replace | set | update) filename <relative> <json>
Para carregar uma configuração do terminal, você usa a versão a seguir do load
comando de modo de configuração. Pressione Ctrl-d para encerrar a entrada.
[edit] user@host# load (factory-default | merge | override | patch | replace | set | update) terminal <relative> <json>
Para substituir uma configuração inteira, você especifica a opção override
em qualquer nível da hierarquia. Uma load override
operação substitui completamente a configuração atual do candidato pelo arquivo que você está carregando. Assim, se você salvou uma configuração completa, você usa essa opção.
Uma override
operação descarta a configuração atual do candidato e carrega a configuração ou filename a configuração que você digita no terminal. Quando você usa a opção override
e compromete a configuração, todos os processos do sistema repartem a configuração.
Para substituir porções de uma configuração, você especifica a opção replace
. A load replace
operação procura replace:
tags que você adicionou ao arquivo carregado. A operação então substitui essas partes da configuração do candidato por tudo o que for especificado após a tag. Isso é útil quando você quer mais controle sobre exatamente o que está sendo mudado. Para que essa operação funcione, você deve incluir replace:
tags no arquivo ou configuração que você digita no terminal. O software pesquisa as replace:
tags, exclui as declarações existentes de mesmo nome, se houver, e as substitui pela configuração de entrada. Se nenhuma declaração de mesmo nome existir, a replace
operação adicionará à configuração as declarações marcadas com a replace:
tag.
Se, em uma override
ou merge
operação, você especificar um arquivo ou texto do tipo que contenha replace:
tags, as replace:
etiquetas serão ignoradas. Nesse cenário, a operação ou merge
operação override
tem precedência e é realizada.
Se você estiver realizando uma replace
operação e se o arquivo que você especifica não tiver tags replace:
, a replace
operação será operada merge
. A replace
operação também funciona como uma merge
operação se o texto que você digita não tiver tags replace:
. Essas informações podem ser úteis se você estiver executando scripts automatizados e não puder saber com antecedência se os scripts precisam realizar uma replace
operação ou uma merge
operação. Os scripts podem usar a replace
operação para cobrir ambos os casos.
A load merge
operação mescla a configuração do arquivo ou terminal salvo com a configuração do candidato existente. Essas informações são úteis se você estiver adicionando novas seções de configuração. Por exemplo, suponha que você esteja adicionando uma configuração BGP ao nível de [edit protocols]
hierarquia, onde não havia configuração BGP antes. Você pode usar a load merge
operação para combinar a configuração de entrada com a configuração do candidato existente. Se a configuração existente e a configuração de entrada conterem declarações conflitantes, as declarações na configuração de entrada substituirão as da configuração existente.
Para substituir apenas as partes da configuração que mudaram, você especifica a opção update
em qualquer nível da hierarquia. A load update
operação compara a configuração do candidato e os novos dados de configuração. Essa operação muda apenas as partes da configuração do candidato que são diferentes da nova configuração. Você usaria essa operação, por exemplo, se houvesse uma configuração BGP existente e o arquivo que você está carregando a alterasse de alguma forma.
O merge
, override
e update
as opções oferecem suporte a dados de configuração de carregamento no formato JavaScript Object Notation (JSON). Ao carregar dados de configuração que usam o formato JSON, você deve especificar a opção json
no comando. Para carregar dados de configuração JSON que contém entradas de lista não desordenadas, ou seja, listar entradas onde a chave da lista não é necessariamente o primeiro elemento da entrada da lista, veja Carregue dados de configuração JSON com entradas de lista não desordenadas.
Para alterar parte da configuração com um arquivo de patch, você especifica a opção patch
. A load patch
operação carrega uma entrada de arquivo ou terminal que contém alterações de configuração. Primeiro, em um dispositivo que já tem as mudanças de configuração, você digita o show | compare
comando para deixar de lado as diferenças entre duas configurações. Em seguida, você pode carregar as diferenças em outro dispositivo. A vantagem do load patch
comando é que ele salva você de ter que copiar trechos de diferentes níveis de hierarquia em um arquivo de texto antes de carregá-los no dispositivo alvo. Esse pode ser um economia de tempo útil se você estiver configurando vários dispositivos com as mesmas opções. Por exemplo, suponha que você configure uma política de roteamento no roteador1 e queira replicar a configuração de política no roteador2, roteador3 e roteador4. Você pode usar a load patch
operação.
Neste exemplo, você primeiro executa o show | compare
comando.
Example:
user@router1# show | compare rollback 3 [edit protocols ospf] + export default-static; - export static-default [edit policy-options] + policy-statement default-static { + from protocol static; + then accept; + }
Continuando este exemplo, você copia a saída do show | compare
comando para a prancheta, certificando-se de incluir os níveis de hierarquia. No roteador2, roteador3 e roteador4, você digita load patch terminal
e cola a saída. Em seguida, pressione Enter e pressione Ctrl-d para encerrar a operação. Se a entrada de patch especificar valores diferentes para uma declaração existente, a entrada de patch substituirá a declaração existente.
Para usar a opção merge
, replace
set
ou update
opção sem especificar o nível de hierarquia completo, você especifica a opçãorelative
. Essa opção carrega a configuração de entrada em relação ao seu ponto de edição atual na hierarquia de configuração.
Example:
[edit system]
user@host# show static-host-mapping
bob sysid 987.654.321ab
[edit system]
user@host# load replace terminal relative
[Type ^D at a new line to end input]
replace: static-host-mapping {
bob sysid 0123.456.789bc;
}
load complete
[edit system]
user@host# show static-host-mapping
bob sysid 0123.456.789bc;
Para carregar uma configuração que contenha set
comandos de modo de configuração, especifique a opção set
. Essa opção executa as instruções de configuração linha por linha conforme elas são armazenadas em um arquivo ou em um terminal. As instruções podem conter qualquer comando de modo de configuração, comoset
, edit
eexit
top
.
Para copiar um arquivo de configuração de outro sistema de rede para o roteador local, você pode usar os serviços SSH e Telnet, conforme descrito no CLI Explorer.
Se você estiver trabalhando em um ambiente de Critérios Comuns, as mensagens de log do sistema são criadas sempre que um secret
atributo é alterado (por exemplo, alterações de senha ou alterações no segredo compartilhado RADIUS). Essas alterações são registradas durante as seguintes operações de carga de configuração:
load merge load replace load override load update
Como a codificação de caracteres funciona nos dispositivos da Juniper Networks
Os dados de configuração e a saída de comando operacional do Junos OS podem conter caracteres não ASCII, que estão fora do conjunto de caracteres ASCII de 7 bits. Ao exibir dados operacionais ou de configuração em determinados formatos ou em um determinado tipo de sessão, o software escapa e codifica esses caracteres. O software escapa ou codifica os caracteres usando a referência de caráter decimais UTF-8 equivalente.
A CLI tenta exibir quaisquer caracteres não ASCII em dados de configuração produzidos em formato de texto, conjunto ou JSON. A CLI também tenta exibir esses caracteres em saída de comando produzida em formato de texto. Nos casos de exceção, a CLI exibe a referência de caráter decimais UTF-8. (Casos de exceção incluem dados de configuração em formato XML e saída de comando no formato XML ou JSON,) Nas sessões de protocolo NETCONF e Junos XML, você vê um resultado semelhante se solicitar dados de configuração ou saída de comando que contenha caracteres não ASCII. Nesse caso, o servidor devolve a referência de caráter decimal UTF-8 equivalente para esses caracteres para todos os formatos.
Por exemplo, suponha que a seguinte conta de usuário, que contém a letra pequena n em latim com um azulejo (ñ), esteja configurada no dispositivo.
[edit] user@host# set system login user mariap class super-user uid 2007 full-name "Maria Peña"
Quando você exibe a configuração resultante em formato de texto, a CLI imprime o personagem correspondente.
[edit] user@host# show system login user mariap full-name "Maria Peña"; uid 2007; class super-user;
Quando você exibe a configuração resultante em formato XML na CLI, o personagem ñ mapeia para sua referência ñ
de caráter decimais UTF-8 equivalente. O mesmo resultado ocorre se você exibir a configuração em qualquer formato em uma sessão de protocolo NETCONF ou Junos XML.
[edit] user@host# show system login user mariap | display xml <rpc-reply xmlns:junos="http://xml.juniper.net/junos/17.2R1/junos"> <configuration junos:changed-seconds="1494033077" junos:changed-localtime="2017-05-05 18:11:17 PDT"> <system> <login> <user> <name>mariap</name> <full-name>Maria Peña</full-name> <uid>2007</uid> <class>super-user</class> </user> </login> </system> </configuration> <cli> <banner>[edit]</banner> </cli> </rpc-reply>
Quando você carrega dados de configuração em um dispositivo, você pode carregar caracteres não ASCII usando suas referências de caracteres decimais UTF-8 equivalentes.
Sobre especificar declarações e identificadores
Este tópico fornece detalhes sobre declarações de contêiner de CLI e declarações do leaf para que você saiba como especifique-as ao criar arquivos de configuração ASCII. Este tópico também descreve como a CLI executa a verificação do tipo para verificar se os dados que você inseriu estão no formato correto.
Especificando declarações
As declarações são mostradas de duas maneiras, com aparelho ({ }) ou sem:
-
Nome e identificador de declaração, com uma ou mais declarações de nível inferior fechadas em aparelhos:
statement-name1 identifier-name { statement-name2; additional-statements; }
-
Nome da declaração, identificador e um único identificador:
statement-name identifier-name1 identifier-name2;
O statement-name nome da declaração. O identifier-name é um nome ou outra cadeia que identifica exclusivamente uma instância de uma declaração. Você usa um identificador quando uma declaração pode ser especificada mais de uma vez em uma configuração.
Ao especificar uma declaração, você deve especificar um nome de declaração, um nome de identificador ou ambos, dependendo da hierarquia da declaração.
Você especifica identificadores de uma das seguintes maneiras:
-
identifier-name— A identifier-name palavra-chave é usada para identificar uma declaração com exclusividade quando uma declaração pode ser especificada mais de uma vez em uma declaração.
-
identifier-name value— A identifier-name palavra-chave é uma variável de opção value necessária.
-
identifier-name [value1 value2 value3
...]
— A identifier-name palavra-chave é uma palavra-chave que aceita vários valores. Os suportes são necessários quando você especifica um conjunto de valores; no entanto, eles são opcionais quando você especifica apenas um valor.
Os exemplos a seguir ilustram como as declarações e identificadores são especificados na configuração:
protocol { # Top-level statement (statement-name). ospf { # Statement under "protocol" (statement-name). area 0.0.0.0 { # OSPF area "0.0.0.0" (statement-name identifier-name), interface so-0/0/0 { # which contains an interface named "so-0/0/0." hello-interval 25; # Identifier and value (identifier-name value). priority 2; # Identifier and value (identifier-name value). disable; # Flag identifier (identifier-name). } interface so-0/0/1; # Another instance of "interface," named so-0/0/1, } # this instance contains no data, so no braces } # are displayed. } policy-options { # Top-level statement (statement-name). term term1 { # Statement under "policy-options" # (statement-name value). from { # Statement under "term" (statement-name). route-filter 10.0.0.0/8 orlonger reject; # One identifier ("route-filter") with route-filter 127.0.0.0/8 orlonger reject; # multiple values. route-filter 128.0.0.0/16 orlonger reject; route-filter 149.20.64.0/24 orlonger reject; route-filter 172.16.0.0/12 orlonger reject; route-filter 191.255.0.0/16 orlonger reject; } then { # Statement under "term" (statement-name). next term; # Identifier (identifier-name). } } }
Quando você cria um arquivo de configuração ASCII, você especifica declarações e identificadores. Cada declaração tem um estilo preferido, e a CLI usa esse estilo ao exibir a configuração em resposta a um comando de modo show
de configuração. Você pode especificar declarações e identificadores de uma das seguintes maneiras:
-
Declaração seguida de identificadores:
statement-name identifier-name [...] identifier-name value [...];
-
Declaração seguida por identificadores fechados em aparelhos:
statement-name { identifier-name; [...] identifier-name value; [...] }
-
Para alguns identificadores repetitivos, você pode usar um conjunto de aparelhos para todas as declarações:
statement-name { identifier-name value1; identifier-name value2; }
Verificação de tipo de CLI
Quando você especifica identificadores e valores, a CLI realiza verificação do tipo para verificar se os dados inseridos estão no formato correto. Por exemplo, para uma declaração na qual você deve especificar um endereço IP, a CLI exige que você insira um endereço em um formato válido. Caso contrário, uma mensagem de erro indica o que você precisa digitar. lista os tipos de dados que a CLI verifica. Os seguintes são os tipos de entrada de configuração CLI:
Tipo de dados |
Formato |
Exemplos |
---|---|---|
Nome da interface física (usado na [ |
|
Correct: Incorrect: |
Nome completo da interface |
|
Correct: Incorrect: |
Nome de interface completo ou abreviado (usado em lugares diferentes da [ |
|
Correct: |
Endereço IP |
|
Correct: Sample translations:
|
Endereço IP (prefixo de destino) e comprimento do prefixo |
|
Correct: Sample translations:
|
Endereço da Organização Internacional para Padronização (ISO) |
|
Correct: Sample translations:
|
Identificador de área de OSPF (ID) |
|
Correct: Sample translations:
|
Sobre o carregamento de uma configuração a partir de um arquivo
Os exemplos a seguir demonstram o processo de carregar uma configuração de um arquivo.





Faça o upload de um arquivo de configuração
Você pode criar um arquivo de configuração em seu sistema local, copiar o arquivo para o dispositivo e, em seguida, carregar o arquivo na CLI. Depois de carregar o arquivo de configuração, você pode empenhá-lo para ativar a configuração no dispositivo. Você também pode editar a configuração de maneira interativa usando a CLI e empenhá-la posteriormente.
Para carregar um arquivo de configuração do seu sistema local:
Para visualizar os resultados das etapas de configuração antes de comprometer a configuração, digite o show
comando no prompt do usuário.
Para comprometer essas alterações na configuração ativa, digite o commit
comando no prompt do usuário. Você também pode editar a configuração de maneira interativa usando a CLI e empenhá-la posteriormente.
Carregue dados de configuração JSON com entradas de lista não desordenadas
O esquema Junos define certos objetos de configuração como listas. Nos dados de configuração JSON, uma instância de lista é codificada como um par de nome/array, e os elementos do array são objetos JSON. Geralmente, a ordem dos membros em uma entrada de lista codificada por JSON é arbitrária porque os objetos JSON são coleções fundamentalmente não ordenadas de membros. No entanto, o esquema Junos exige que as chaves da lista precedam quaisquer outros irmãos dentro de uma entrada da lista e apareçam na ordem especificada pelo esquema.
Por exemplo, o user
objeto no nível de [edit system login]
hierarquia é uma lista onde name
está a chave da lista que identifica cada usuário com exclusividade.
list user { key name; description "Username"; uses login-user-object; }
Nos dados de configuração da amostra a seguir, a chave da lista (name
) é o primeiro elemento para cada usuário. Por padrão, quando você carrega dados de configuração JSON, os dispositivos Junos exigem que as chaves da lista precedam quaisquer outros irmãos dentro de uma entrada de lista e apareçam na ordem especificada pelo esquema.
{ "configuration" : { "system" : { "login" : { "user" : [ { "name" : "operator", "class" : "operator", "uid" : 3001 }, { "name" : "security-admin", "class" : "super-user", "uid" : 3002 } ] } } } }
Os dispositivos Junos oferecem duas opções para carregar dados de configuração JSON que contêm entradas de lista não desordenadas, ou seja, listar entradas onde a chave da lista não é necessariamente o primeiro elemento.
-
Use o comando de
request system convert-json-configuration
modo operacional para produzir dados de configuração JSON com entradas de lista ordenadas antes de carregar os dados no dispositivo. -
Configure a
reorder-list-keys
declaração no nível de[edit system configuration input format json]
hierarquia. Depois de configurar a declaração, você pode carregar dados de configuração JSON com entradas de lista não desordenadas, e o dispositivo reordena as chaves da lista conforme exigido pelo esquema Junos durante a operação de carga.
Quando você configura a reorder-list-keys
declaração, a operação de carga pode levar significativamente mais tempo para analisar a configuração, dependendo do tamanho da configuração e do número de listas. Assim, para configurações ou configurações grandes com muitas listas, recomendamos usar o request system convert-json-configuration
comando em vez da reorder-list-keys
declaração.
Por exemplo, suponha que o user-data.json
arquivo contenha a seguinte configuração JSON. Se você tentasse carregar a configuração, o dispositivo emitiria um erro de carga porque admin2
a chave name
da lista não é o primeiro elemento nessa entrada da lista.
user@host> file show /var/tmp/user-data.json { "configuration" : { "system" : { "login" : { "user" : [ { "name" : "admin1", "class" : "super-user", "uid" : 3003 }, { "class" : "super-user", "name" : "admin2", "uid" : 3004 } ] } } } }
Se você usar o request system convert-json-configuration
comando com o arquivo anterior como entrada, o comando gera o arquivo de saída especificado com dados de configuração JSON que o dispositivo Junos pode analisar durante a operação de carga.
user@host> request system convert-json-configuration /var/tmp/user-data.json output-filename user-data-ordered.json user@host> file show user-data-ordered.json { "configuration":{ "system":{ "login":{ "user":[ { "name":"admin1", "class":"super-user", "uid":3003 }, { "name":"admin2", "class":"super-user", "uid":3004 } ] } } } }
Alternativamente, você pode configurar a declaração de reorder-list-keys
configuração.
user@host# set system configuration input format json reorder-list-keys user@host# commit
Depois de configurar a declaração, você pode carregar o arquivo de configuração JSON original com entradas de lista não desordenadas, e o dispositivo lida com as entradas da lista quando analisa a configuração.
user@host# load merge json /var/tmp/user-data.json load complete