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 operação

A maioria dos comandos de modo operacional Junos OS tem equivalentes XML. Os scripts de operação 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.

O uso de RPCs e comandos de modo operacional em scripts de operação é discutido com mais detalhes nas seguintes seções:

Usando RPCs em scripts de operação

Para usar um RPC em um script de operação SLAX ou XSLT, inclua o RPC em uma declaração variável e, em seguida, invoque o RPC usando a jcs:invoke() função ou jcs:execute() extensão com variável RPC como argumento. A jcs:invoke() função executa o RPC no dispositivo local. A jcs:execute() função, em conjunto com uma alça de conexão, executa o RPC em um dispositivo remoto.

O trecho a seguir, que invoca um RPC no dispositivo local, é expandido e totalmente descrito no exemplo: Personalize a saída das interfaces de show terse Command usando um script de operação:

Sintaxe XSLT

Sintaxe SLAX

O trecho a seguir invoca o mesmo RPC em um dispositivo remoto:

Sintaxe XSLT

Sintaxe SLAX

Nos scripts de op 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.

Para executar o RPC no dispositivo local, crie a Device instância usando uma lista de argumentos vazia. Para executar o RPC em um dispositivo remoto, crie uma instância de uso dos Device argumentos apropriados para se conectar a esse dispositivo.

O código a seguir invoca um RPC no dispositivo local e imprime a resposta:

Sintaxe Python

O código a seguir invoca o mesmo RPC em um dispositivo remoto e imprime a resposta:

Sintaxe Python

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 um RPC é executado, configure as informações-chave do host SSH com 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.

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 operação

Alguns comandos de modo operacional não têm equivalentes XML. 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, por exemplo:

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.

Os scripts de op SLAX e XSLT podem incluir 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 operação 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 .