NESTA PÁGINA
Exemplo: altere a configuração usando scripts de op SLAX e XSLT
Este exemplo explica como fazer alterações estruturadas na configuração do Junos OS usando um script op SLAX.
Configuração do dispositivo
Procedimento passo a passo
Baixar, habilitar e testar o script:
Copie o script em um arquivo de texto, nomeie o arquivo config-change.slax e copie-o para /var/db/scripts/op/ diretório no dispositivo.
No modo de configuração, configure o nome de arquivo do script no nível de
[edit system scripts op file]
hierarquia.[edit system scripts op] user@host# set file config-change.slax
Emita o
commit and-quit
comando para comprometer a configuração e voltar ao modo operacional.[edit] user@host# commit and-quit
Antes de executar o script, emita o comando do
show interfaces interface-name
modo operacional e registre o estado atual da interface que será desativado pelo script.Execute o script de operação.
user@host> op config-change This script disables the interface specified by the user. The script modifies the candidate configuration to disable the interface and commits the configuration to activate it. Enter interface to disable: so-0/0/0
Requisitos
Este exemplo usa um dispositivo que executa o Junos OS.
Visão geral e script de operações
Os scripts de op SLAX e XSLT podem usar o jcs:load-configuration
modelo, que está localizado no arquivo de importação junos.xsl , para fazer alterações estruturadas na configuração do Junos OS. Este exemplo cria um script op SLAX que usa o jcs:load-configuration
modelo para desabilitar uma interface em um dispositivo que executa o Junos OS. Todos os valores necessários para o jcs:load-configuration
modelo são definidos como variáveis, que são então passados para o modelo.
Neste exemplo, a usage
variável é inicializada com uma descrição geral da função do script. Quando você executa o script, ele chama a jcs:output()
função de saída da descrição de uso para a CLI. Isso permite que você verifique se está usando o script para a finalidade correta.
O script chama a jcs:get-input()
função, que solicita que o nome da interface desabile e armazena o nome da interface na interface
variável. A config-changes
variável armazena os dados de configuração do Junos XML para carregar no dispositivo e faz referência à interface
variável. A jcs:load-configuration
chamada de modelo define o valor do configuration
parâmetro para os dados armazenados na config-changes
variável.
A load-action
variável está definida para merge
, o que mescla os novos dados de configuração com a configuração do candidato. Isso equivale ao comando load merge
de modo de configuração CLI.
A options
variável define as opções para a operação de confirmação. Ele usa o :=
operador para criar um conjunto de nós, que é passado para o modelo como o valor do commit-options
parâmetro. Este exemplo inclui a log
tag para adicionar a descrição do compromisso ao log de confirmação para referência futura.
A chamada para a jcs:open()
função abre uma conexão com o processo de gerenciamento do Junos OS (mgd) no dispositivo local e retorna uma alça de conexão que é armazenada na conn
variável. O script então chama o jcs:load-configuration
modelo.
O :=
operador copia os resultados da chamada do jcs:load-configuration
modelo para uma variável temporária e executa a node-set
função nessa variável. O conjunto de nós resultante é então armazenado na results
variável. O :=
operador garante que a results
variável seja um conjunto de nós em vez de um fragmento de árvore de resultado para que o script possa acessar o conteúdo.
A jcs:close()
função fecha a conexão com o dispositivo. Por padrão, o jcs:load-configuration
modelo não fornece mensagens para a CLI. Este exemplo pesquisa e imprime xmn:warning
e xnm:error
mensagens na resposta para identificar rapidamente quaisquer problemas com o commit.
Sintaxe SLAX
version 1.2; ns junos = "http://xml.juniper.net/junos/*/junos"; ns xnm = "http://xml.juniper.net/xnm/1.1/xnm"; ns jcs = "http://xml.juniper.net/junos/commit-scripts/1.0"; ns ext = "http://xmlsoft.org/XSLT/namespace"; import "../import/junos.xsl"; match / { <op-script-results> { var $usage = "This script disables the specified interface." _ "The script modifies the candidate configuration to disable " _ "the interface and commits the configuration to activate it."; var $temp = jcs:output($usage); var $interface = jcs:get-input("Enter interface to disable: "); var $config-changes = { <configuration> { <interfaces> { <interface> { <name> $interface; <disable>; } } } } var $load-action = "merge"; var $options := { <commit-options> { <log> "disabling interface " _ $interface; } } var $conn = jcs:open(); var $results := { call jcs:load-configuration( $action=$load-action, $commit-options=$options, $configuration=$config-changes, $connection=$conn); } var $close-results = jcs:close($conn); if ($results//xnm:error) { for-each ($results//xnm:error) { <output> message; } } if ($results//xnm:warning) { for-each ($results//xnm:warning) { <output> message; } } } }
Verificação
Verificando o commit
Propósito
Verifique se o compromisso foi bem sucedido.
Ação
Você deve incluir o código em seu script que analisa o conjunto de nós devolvido pelo jcs:load-configuration
modelo para quaisquer erros ou avisos. Isso permite que você determine com mais facilidade se o commit teve sucesso. Se não houver mensagens de aviso ou erro, você pode verificar o sucesso do commit de várias maneiras.
Verifique o log de confirmação para verificar se o commit foi bem sucedido. Se você incluiu a opção
log
nocommit-options
parâmetro, a mensagem deve ser visível no log de confirmação, juntamente com as informações de confirmação.user@host> show system commit 0 2010-09-22 17:08:17 PDT by user via junoscript disabling interface so-0/0/0
Verifique o arquivo de mensagens de syslog para verificar se a operação de confirmação foi registrada. Neste caso, você também vê uma
SNMP_TRAP_LINK_DOWN
mensagem para a interface desabilitada para 0/0/0. Dependendo das configurações de sua configuração para traceoptions, essa mensagem pode ou não aparecer em seu arquivo de log.user@host> show log messages | last Sep 22 17:08:13 host file[7319]: UI_COMMIT: User 'user' requested 'commit' operation (comment: disabling interface so-0/0/0) Sep 22 17:08:16 host mib2d[1434]: SNMP_TRAP_LINK_DOWN: ifIndex 526, ifAdminStatus down(2), ifOperStatus down(2), ifName so-0/0/0
Verificando as mudanças de configuração
Propósito
Verifique se as alterações corretas estão integradas à configuração.
Ação
Exibir a configuração e verificar se as alterações são visíveis para a interface especificada.
user@host> show configuration interfaces so-0/0/0 disable;
Por este exemplo, você também pode emitir o comando de
show interfaces interface-name
modo operacional para verificar se a interface foi desativada. Neste caso, a saída capturada antes da interface ser desativada mostra que a interface éEnabled
.user@host> show interfaces so-0/0/0 Physical interface: so-0/0/0, Enabled, Physical link is Up Interface index: 128, SNMP ifIndex: 526 Link-level type: PPP, MTU: 4474, Clocking: Internal, SONET mode, Speed: OC3, Loopback: None, FCS: 16, Payload scrambler: Enabled Device flags : Present Running Interface flags: Point-To-Point SNMP-Traps Internal: 0x4000 Link flags : Keepalives CoS queues : 4 supported, 4 maximum usable queues Last flapped : 2010-09-14 10:33:25 PDT (1w1d 06:27 ago) Input rate : 0 bps (0 pps) Output rate : 0 bps (0 pps) SONET alarms : None SONET defects : None
A saída capturada após executar o script para desativar a interface mostra que a interface está agora
Administratively down
.user@host> show interfaces so-0/0/0 Physical interface: so-0/0/0, Administratively down, Physical link is Up Interface index: 128, SNMP ifIndex: 526 Link-level type: PPP, MTU: 4474, Clocking: Internal, SONET mode, Speed: OC3, Loopback: None, FCS: 16, Payload scrambler: Enabled Device flags : Present Running Interface flags: Down Point-To-Point SNMP-Traps Internal: 0x4000 Link flags : Keepalives CoS queues : 4 supported, 4 maximum usable queues Last flapped : 2010-09-14 10:33:25 PDT (1w1d 06:40 ago) Input rate : 0 bps (0 pps) Output rate : 0 bps (0 pps) SONET alarms : None SONET defects : None