Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Como usar RPCs e comandos de modo operacional em scripts de eventos

A maioria dos comandos de modo operacional Junos OS tem equivalentes XML. Os scripts de eventos podem executar esses comandos XML em um dispositivo local ou remoto usando o protocolo de chamada de procedimento remoto (RPC). Todos os comandos de modo operacional que têm equivalentes XML estão listados na Referência de Desenvolvedor Operacional de API Junos XML.

Os scripts SLAX e XSLT executam RPCs em um dispositivo local ou remoto usando as jcs:invoke() funções ou jcs:execute() extensão, respectivamente. Nos scripts Python, os RPCs são fáceis de executar usando APIs Junos PyEZ . Cada instância da classe Junos PyEZ Device tem uma rpc propriedade que permite que você execute qualquer RPC disponível através da API Junos XML. Após estabelecer uma sessão com um dispositivo local ou remoto, você pode executar o RPC anexando o nome do rpc método de propriedade e RPC à instância do dispositivo. O valor de devolução é um objeto XML a partir do primeiro elemento sob a <rpc-reply> tag.

O uso de RPCs e comandos de modo operacional em scripts de caso seja discutido com mais detalhes nas seguintes seções:

Execução de RPCs em um dispositivo local

Em um script de eventos SLAX ou XSLT, para executar um RPC no dispositivo local, incluir o RPC em uma declaração variável e chamar a jcs:invoke() função de extensão com a variável RPC como argumento. O trecho a seguir invoca um RPC no dispositivo local:

Sintaxe XSLT

Sintaxe SLAX

Em um script de evento Python, para executar um RPC no dispositivo local, criar a Device instância usando uma lista de argumentos vazia e apensar a rpc propriedade e a lista de nomes e argumentos do método RPC para a instância do dispositivo.

Sintaxe Python

Nota:

Quando você cria a Device instância usando uma lista de argumentos vazia para se conectar ao dispositivo local, o Junos OS usa os privilégios de acesso do usuário configurado no nível de [edit event-options event-script file filename python-script-user] hierarquia. Se a python-script-user declaração for omitida, o Junos OS usará os privilégios de acesso do usuário e grupo nobodygenéricos e desprivilegiados.

Execução de RPCs em um dispositivo remoto

Em um script de evento SLAX ou XSLT, para executar um RPC em um dispositivo remoto, primeiro inclua o RPC em uma declaração variável e crie uma alça de conexão usando a jcs:open() função de extensão com os argumentos necessários para se conectar ao dispositivo remoto. Em seguida, chame a jcs:execute() função de extensão e inclua a alça de conexão e a variável RPC como argumentos. Por exemplo:

Sintaxe XSLT

Sintaxe SLAX

Em um script de evento Python, para executar um RPC em um dispositivo remoto, crie primeiro uma instância de uso dos Device argumentos necessários para se conectar ao dispositivo remoto. Em seguida, execute o RPC anexando a rpc propriedade e a lista de nomes e argumentos do método RPC à instância do dispositivo.

Sintaxe Python

Nota:

O Junos OS se conecta e executa operações no dispositivo remoto usando os privilégios de acesso do usuário especificados na Device() lista de argumentos, mesmo que um usuário diferente esteja configurado para a python-script-user declaração no nível de [edit event-options event-script file filename] hierarquia.

Para evitar adicionar os detalhes de conexão remota diretamente em um script de evento, você pode especificar detalhes de execução remota para cada script de evento que executa RPCs em um dispositivo remoto no nível de [edit event-options event-script file filename remote-execution] hierarquia. Recomendamos adicionar os detalhes de execução remota à configuração em vez de diretamente no script de eventos, porque todas as informações estão disponíveis em um único local, e a senha é criptografada na configuração.

Para cada dispositivo remoto onde um RPC é executado, configure o nome de host do dispositivo e o nome de usuário e senha correspondentes.

Os nomes de host remotos e seu nome de usuário e senha correspondentes, além dos detalhes do evento, são passados como entrada para o script do evento quando são executados por uma política de eventos. Para obter mais informações sobre os detalhes encaminhados ao script do evento, consulte detalhes de evento de uso e execução remota em scripts de eventos.

Um script de evento faz referência aos detalhes de execução remota na lista de argumentos da função usada para criar a conexão com o host remoto. Uma vez estabelecida a conexão, o script pode executar RPCs nesse dispositivo.

Nos scripts de eventos Python, você faz referência aos detalhes de execução remota na lista de argumentos da instância Junos PyEZ Device() . O código a seguir itera dos detalhes de execução remota para todos os hosts configurados para esse script de evento e se conecta e executa o mesmo RPC em cada host.

Sintaxe Python

Em scripts SLAX ou XSLT, crie uma conexão com o host remoto usando a jcs:open() função e faça referência aos detalhes de execução remota na lista de argumentos. Por exemplo:

Sintaxe XSLT

Sintaxe SLAX

Para executar um RPC em um dispositivo remoto, uma sessão de SSH deve ser estabelecida. Para que o script estabeleça a conexão, você deve configurar as informações-chave do host SSH para o dispositivo remoto no dispositivo local onde o script será executado, ou as informações-chave do host SSH para o dispositivo remoto devem existir no arquivo de hosts conhecido do usuário que executa o script. Para cada dispositivo remoto onde o RPC é executado, configure as informações-chave do host SSH usando um dos seguintes métodos:

  • Para configurar hosts conhecidos de SSH no dispositivo local, inclua a host declaração e especifique as opções de nome de host e host para o dispositivo remoto no [edit security ssh-known-hosts] nível de hierarquia da configuração.

  • Para recuperar manualmente as informações chave do host SSH, emita o comando do set security ssh-known-hosts fetch-from-server hostname modo de configuração para instruir o Junos OS a se conectar ao dispositivo remoto e adicionar a chave.

  • Para importar manualmente as informações-chave do host SSH de um arquivo, use o comando de set security ssh-known- hosts load-key-file filename modo de configuração e especifique o arquivo de hosts conhecidos.

  • Como alternativa, o usuário que executa o script pode fazer login no dispositivo local, SSH para o dispositivo remoto e, em seguida, aceitar manualmente a chave do host, que é adicionada ao arquivo de hosts conhecido do usuário. No exemplo a seguir, a raiz está logada no roteador1. Para executar um RPC remoto no roteador2, a raiz adiciona a chave host do roteador2, emitindo o comando do ssh router2 modo operacional e aceitando manualmente a chave.

Depois de configurar a chave de host SSH necessária e obter uma alça de conexão com o dispositivo remoto, o script de evento pode executar RPCs com a jcs:execute() função de extensão naquele dispositivo remoto.

Exibindo as tags RPC para um comando

Você pode exibir as tags RPC XML para comandos de modo operacional na CLI do dispositivo. Para exibir as etiquetas RPC XML para um comando, entre display xml rpc após o símbolo do pipe (|).

O exemplo a seguir exibe as tags RPC para o show route comando:

Os scripts SLAX e XSLT podem executar RPCs usando as tags RPC XML. Os scripts Python devem converter as tags RPC e as opções de comando em um formato adequado para Python. Para obter mais informações sobre o uso do Junos PyEZ para executar RPCs e sobre o mapeamento das tags RPC ao método Python correspondente e aos argumentos do método, consulte o uso do Junos PyEZ para executar RPCs em dispositivos que executam o Junos OS.

Usando comandos de modo operacional em scripts de eventos

Alguns comandos de modo operacional não têm equivalentes XML. Os scripts SLAX e XSLT podem executar comandos que não têm equivalente XML usando o <command> elemento. Os scripts Python podem executar esses comandos usando o método Junos PyEZ cli() definido na Device classe.

Se um comando não estiver listado no Junos XML API Operational Developer Reference, o comando não tem um equivalente XML. Outra maneira de determinar se um comando tem um equivalente XML é emitir o comando seguido pelo | display xml comando.

Se a saída incluir apenas elementos de tag como <output>, <cli>e <banner>, o comando pode não ter um equivalente XML. No exemplo a seguir, a saída indica que o show host comando não tem equivalente XML:

Nota:

Para alguns comandos que têm um equivalente XML, a saída do comando encanado | display xml não inclui elementos de tag que <output>não sejam , <cli>e <banner> apenas porque o recurso relevante não está configurado. Por exemplo, o show services cos statistics forwarding-class comando tem um equivalente XML que devolve a <service-cos-forwarding-class-statistics> saída na tag de resposta, mas se a configuração não incluir nenhuma declaração no nível de [edit class-of-service] hierarquia, então não há dados reais para o show services cos statistics forwarding-class | display xml comando exibir. A saída é semelhante a esta:

Por isso, as informações na referência de desenvolvedor operacional de API Junos XML geralmente são mais confiáveis.

Scripts de eventos SLAX e XSLT podem executar comandos que não têm equivalente XML. Use os <command>elementos <xsl:value-of>e <output> os elementos do script, conforme mostrado no seguinte trecho de código. Este trecho é expandido e totalmente descrito em Exemplo: Exibir informações de nome de host DNS usando um script de operação.

Os scripts de eventos Python podem executar comandos que não têm equivalente XML usando APIs Junos PyEZ. O cli() método definido na Device classe executa um comando de modo operacional e devolve a saída em formato de texto. Por exemplo:

Você também pode especificar format='xml' a devolução da saída formatada como elementos Junos OS XML. Para obter mais informações sobre o método Junos PyEZ cli , consulte http://junos-pyez.readthedocs.org/en/latest/_modules/jnpr/junos/device.html#Device.cli .