NESTA PÁGINA
Exemplo: altere a configuração usando scripts de operação SLAX e XSLT
Este exemplo explica como fazer alterações estruturadas na configuração do Junos OS usando um script operacional 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 o /var/db/scripts/op/ directory 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
Emite 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ção
Os scripts de operação 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 de operação SLAX que usa o jcs:load-configuration
modelo para desativar 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 verificar se você está usando o script para a finalidade correta.
O script chama a jcs:get-input()
função, que solicita a desativação do nome da interface e armazena o nome da interface
interface na 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 é o equivalente ao comando load merge
de modo de configuração CLI.
A options
variável define as opções para a operação de compromisso. 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 compromisso 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 devolve uma alça de conexão armazenada na conn
variável. O script então chama o jcs:load-configuration
modelo.
O :=
operador copia os resultados da chamada de jcs:load-configuration
modelo para uma variável temporária e executa a node-set
função nessa variável. O conjunto de nó resultante é então armazenado na results
variável. O :=
operador garante que a results
variável seja um conjunto de nó 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.0; 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 commit foi bem sucedido.
Ação
Você deve incluir um código em seu script que analisa o conjunto de nó devolvido pelo jcs:load-configuration
modelo para quaisquer erros ou avisos. Isso permite determinar com mais facilidade se o commit foi bem sucedido. Se não houver mensagens de aviso ou erro, você pode verificar o sucesso do commit de várias maneiras.
Verifique o log de compromisso para verificar se o commit foi bem-sucedido. Se você incluir a opção
log
nocommit-options
parâmetro, a mensagem deve ser visível no log de compromisso, juntamente com as informações de compromisso.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 compromisso foi registrada. Nesse caso, você também vê uma
SNMP_TRAP_LINK_DOWN
mensagem para a interface desabilitada para 0/0/0/0. Dependendo das configurações de configuração para rastreamentos, 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 exemplo, você também pode emitir o comando de
show interfaces interface-name
modo operacional para verificar se a interface foi desabilitada. Nesse 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