Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Cómo usar RPCs y comandos de modo operativo en scripts operativos

La mayoría de los comandos del modo operativo de Junos OS tienen equivalentes XML. Los scripts operativos pueden ejecutar estos comandos XML en un dispositivo local o remoto mediante el protocolo de llamada a procedimiento remoto (RPC). Todos los comandos de modo operativo que tienen equivalentes XML se enumeran en la Referencia para desarrolladores operativos de la API XML de Junos.

El uso de RPCs y comandos de modo operativo en scripts operativos se analiza con más detalle en las siguientes secciones:

Uso de RPCs en scripts operativos

Para usar una RPC en una secuencia de comandos OP SLAX o XSLT, incluya el RPC en una declaración de variable y, luego, invoque la RPC mediante la jcs:invoke() función de extensión o jcs:execute() con la variable RPC como argumento. La jcs:invoke() función ejecuta la RPC en el dispositivo local. La jcs:execute() función, junto con un identificador de conexión, ejecuta la RPC en un dispositivo remoto.

El siguiente fragmento de código, que invoca una RPC en el dispositivo local, se expande y se describe por completo en ejemplo: Personalizar el resultado del comando mostrar interfaces terse mediante una secuencia de comandos de operación:

Sintaxis de XSLT

Sintaxis SLAX

El siguiente fragmento de código invoca la misma RPC en un dispositivo remoto:

Sintaxis de XSLT

Sintaxis SLAX

En los scripts operativos de Python, las RPCs son fáciles de ejecutar mediante las API de Junos PyEZ . Cada instancia de la clase Junos PyEZ Device tiene una rpc propiedad que le permite ejecutar cualquier RPC disponible a través de la API XML de Junos. Después de establecer una sesión con un dispositivo local o remoto, puede ejecutar la RPC anexando la propiedad y el nombre del rpc método RPC a la instancia del dispositivo. El valor devuelto es un objeto XML que comienza en el primer elemento bajo la <rpc-reply> etiqueta.

Para ejecutar la RPC en el dispositivo local, cree la Device instancia con una lista de argumentos vacía. Para ejecutar la RPC en un dispositivo remoto, cree una instancia de uso de Device los argumentos adecuados para conectarse a ese dispositivo.

El código siguiente invoca una RPC en el dispositivo local e imprime la respuesta:

Sintaxis de Python

El código siguiente invoca el mismo RPC en un dispositivo remoto e imprime la respuesta:

Sintaxis de Python

Para ejecutar una RPC en un dispositivo remoto, se debe establecer una sesión SSH . Para que la secuencia de comandos establezca la conexión, debe configurar la información de clave de host SSH para el dispositivo remoto en el dispositivo local donde se ejecutará la secuencia de comandos, o la información de clave de host SSH para el dispositivo remoto debe existir en el archivo hosts conocido del usuario que ejecuta la secuencia de comandos. Para cada dispositivo remoto en el que se ejecuta una RPC, configure la información de clave de host SSH con uno de los siguientes métodos:

  • Para configurar hosts SSH conocidos en el dispositivo local, incluya la host instrucción y especifique opciones de nombre de host y host para el dispositivo remoto en el [edit security ssh-known-hosts] nivel de jerarquía de la configuración.

  • Para recuperar manualmente la información de la clave de host SSH, emita el comando de set security ssh-known-hosts fetch-from-server hostname modo de configuración para indicar a Junos OS que se conecte al dispositivo remoto y agregue la clave.

  • Para importar manualmente información de clave de host SSH desde un archivo, use el comando de set security ssh-known-hosts load-key-file filename modo de configuración y especifique el archivo de hosts conocidos.

  • Como alternativa, el usuario que ejecuta la secuencia de comandos puede iniciar sesión en el dispositivo local, SSH en el dispositivo remoto y, luego, aceptar manualmente la clave de host, que se agrega al archivo de hosts conocido de ese usuario. En el ejemplo siguiente, la raíz se inicia sesión en el enrutador1. Para ejecutar una RPC remota en el enrutador2, la raíz agrega la clave de host del enrutador2 mediante la emisión del comando del ssh router2 modo operativo y la aceptación manual de la clave.

Mostrar las etiquetas RPC para un comando

Puede mostrar las etiquetas XML RPC para los comandos de modo operativo en la CLI del dispositivo. Para mostrar las etiquetas XML RPC para un comando, escriba display xml rpc después del símbolo de canalización ( | ).

En el siguiente ejemplo, se muestran las etiquetas RPC para el show route comando:

Las secuencias de comandos SLAX y XSLT pueden ejecutar RPCs mediante las etiquetas XML RPC. Las secuencias de comandos de Python deben convertir las etiquetas RPC y las opciones de comando en un formato adecuado para Python. Para obtener más información acerca del uso de Junos PyEZ para ejecutar RPCs y acerca de la asignación de etiquetas RPC al método y los argumentos de método correspondientes de Python, consulte Uso de Junos PyEZ para ejecutar RPCs en dispositivos que ejecutan Junos OS.

Uso de comandos de modo operativo en scripts operativos

Algunos comandos de modo operativo no tienen equivalentes XML. Las secuencias de comandos SLAX y XSLT pueden ejecutar comandos que no tienen ningún equivalente XML mediante el <command> elemento. Las secuencias de comandos de Python pueden ejecutar estos comandos mediante el método Junos PyEZ cli() definido en la Device clase.

Si un comando no aparece en la Referencia de desarrollador operativo de la API XML de Junos, el comando no tiene un equivalente XML. Otra forma de determinar si un comando tiene un equivalente XML es emitir el comando seguido del comando, por | display xml ejemplo:

Si el resultado solo incluye elementos de etiqueta como <output>, <cli>y <banner>, el comando podría no tener un equivalente XML. En el ejemplo siguiente, el resultado indica que el show host comando no tiene ningún equivalente XML:

Nota:

Para algunos comandos que tienen un equivalente XML, el resultado del comando en | display xml canalización no incluye elementos de etiqueta distintos <output>de , <cli>y <banner> solo porque la característica relevante no está configurada. Por ejemplo, el show services cos statistics forwarding-class comando tiene un equivalente XML que devuelve el resultado en la <service-cos-forwarding-class-statistics> etiqueta de respuesta, pero si la configuración no incluye ninguna instrucción en el [edit class-of-service] nivel de jerarquía, no hay datos reales para que el show services cos statistics forwarding-class | display xml comando se muestre. La salida es similar a esta:

Por esta razón, la información de la Referencia para desarrolladores operativos de la API XML de Junos suele ser más confiable.

Los scripts operativos SLAX y XSLT pueden incluir comandos que no tienen equivalente XML. Use el <command>, <xsl:value-of>y <output> los elementos de la secuencia de comandos, como se muestra en el siguiente fragmento de código. Este fragmento de código se expande y se describe por completo en Ejemplo: Mostrar información de nombre de host DNS mediante una secuencia de comandos de operación.

Las secuencias de comandos op de Python pueden ejecutar comandos que no tienen ningún equivalente XML mediante el uso de api de Junos PyEZ. El cli() método definido en la Device clase ejecuta un comando de modo operativo y devuelve el resultado en formato de texto. Por ejemplo:

También puede especificar format='xml' para devolver el resultado formateado como elementos XML de Junos OS. Para obtener más información acerca del método Junos PyEZ cli() , consulte http://junos-pyez.readthedocs.org/en/latest/_modules/jnpr/junos/device.html#Device.cli .