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 de eventos

La mayoría de los comandos del modo operativo de Junos OS tienen equivalentes XML. Los scripts de eventos 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 del desarrollador operativo de la API XML de Junos.

Los scripts SLAX y XSLT ejecutan RPCs en un dispositivo local o remoto mediante el uso de las jcs:invoke() funciones de extensión o jcs:execute() , respectivamente. En los scripts de Python, las RPC 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 el RPC anexando la propiedad y el rpc nombre del 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.

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

Ejecución de RPCs en un dispositivo local

En una secuencia de comandos de eventos SLAX o XSLT, para ejecutar un RPC en el dispositivo local, incluya el RPC en una declaración de variable y llame a la jcs:invoke() función de extensión con la variable RPC como argumento. El siguiente fragmento de código invoca una RPC en el dispositivo local:

Sintaxis XSLT

Sintaxis SLAX

En una secuencia de comandos de evento python, para ejecutar una RPC en el dispositivo local, cree la Device instancia usando una lista de argumentos vacía y anexe la rpc propiedad y el nombre de método y la lista de argumentos de LAP a la instancia del dispositivo.

Sintaxis de Python

Nota:

Cuando se crea la Device instancia con una lista de argumentos vacía para conectarse al dispositivo local, Junos OS usa los privilegios de acceso del usuario configurado en el [edit event-options event-script file filename python-script-user] nivel de jerarquía. Si se omite la python-script-user instrucción, Junos OS usa los privilegios de acceso del usuario genérico y sin privilegios y del grupo nobody.

Ejecución de RPCs en un dispositivo remoto

En una secuencia de comandos de eventos SLAX o XSLT, para ejecutar un RPC en un dispositivo remoto, primero incluya el RPC en una declaración de variable y cree un controlador de conexión mediante la jcs:open() función de extensión con los argumentos necesarios para conectarse al dispositivo remoto. A continuación, llame a la jcs:execute() función de extensión e incluya el controlador de conexión y la variable RPC como argumentos. Por ejemplo:

Sintaxis XSLT

Sintaxis SLAX

En una secuencia de comandos de evento python, para ejecutar una RPC en un dispositivo remoto, primero cree una instancia de uso de Device los argumentos necesarios para conectarse al dispositivo remoto. A continuación, ejecute el RPC anexando la rpc propiedad y el nombre del método y la lista de argumentos a la instancia del dispositivo.

Sintaxis de Python

Nota:

Junos OS se conecta a y ejecuta operaciones en el dispositivo remoto mediante los privilegios de acceso del usuario especificados en la Device() lista de argumentos, incluso si un usuario diferente está configurado para la python-script-user instrucción en el [edit event-options event-script file filename] nivel de jerarquía.

Para evitar agregar los detalles de la conexión remota directamente a una secuencia de comandos de evento, puede especificar detalles de ejecución remota para cada secuencia de comandos de evento que ejecute RPCs en un dispositivo remoto en el [edit event-options event-script file filename remote-execution] nivel jerárquico. Recomendamos agregar los detalles de ejecución remota a la configuración en lugar de directamente en la secuencia de comandos de evento, ya que toda la información está disponible en una sola ubicación y la frase de contraseña está cifrada en la configuración.

Para cada dispositivo remoto en el que se ejecuta un RPC, configure el nombre de host del dispositivo y el nombre de usuario y la frase de contraseña correspondientes.

Los nombres de host remotos y su nombre de usuario y frase de contraseña correspondientes, además de los detalles del evento, se pasan como entrada al script de evento cuando se ejecuta mediante una política de eventos. Para obtener más información acerca de los detalles que se reenvían a la secuencia de comandos de eventos, consulte Usar detalles de evento y ejecución remota en scripts de eventos.

Un script de evento hace referencia a los detalles de ejecución remota en la lista de argumentos de la función utilizada para crear la conexión al host remoto. Una vez establecida la conexión, la secuencia de comandos puede ejecutar RPCs en ese dispositivo.

En los scripts de eventos de Python, hace referencia a los detalles de la ejecución remota en la lista de argumentos de la instancia de Junos PyEZ Device() . El código siguiente itera a través de los detalles de ejecución remota para todos los hosts configurados para esa secuencia de comandos de evento y se conecta a y ejecuta el mismo RPC en cada host.

Sintaxis de Python

En scripts SLAX o XSLT, cree una conexión al host remoto mediante la jcs:open() función y haga referencia a los detalles de ejecución remota en la lista de argumentos. Por ejemplo:

Sintaxis XSLT

Sintaxis SLAX

Para ejecutar un RPC en un dispositivo remoto, debe establecerse una sesión SSH. Para que la secuencia de comandos establezca la conexión, debe configurar la información de la clave de host SSH para el dispositivo remoto en el dispositivo local donde se ejecutará la secuencia de comandos, o bien la información de la 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 la RPC, configure la información de clave de host SSH mediante uno de los métodos siguientes:

  • Para configurar hosts conocidos de SSH en el dispositivo local, incluya la host instrucción y especifique las opciones de nombre de host y clave de host para el dispositivo remoto en el [edit security ssh-known-hosts] nivel jerárquico 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, utilice el set security ssh-known- hosts load-key-file filename comando de modo de configuración y especifique el archivo de hosts conocidos.

  • Alternativamente, 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 hosts conocidos de ese usuario. En el ejemplo siguiente, la raíz 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 de ssh router2 modo operativo y la aceptación manual de la clave.

Después de configurar la clave de host SSH necesaria y obtener un controlador de conexión al dispositivo remoto, la secuencia de comandos de evento puede ejecutar RPC con la jcs:execute() función de extensión en ese dispositivo remoto.

Mostrar las etiquetas RPC para un comando

Puede mostrar las etiquetas XML de RPC para comandos de modo operativo en la CLI del dispositivo. Para mostrar las etiquetas XML de 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:

Los scripts SLAX y XSLT pueden ejecutar RPC mediante las etiquetas XML de RPC. Los scripts de Python deben convertir las etiquetas y las opciones de comando de LAR 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 de Python correspondientes, consulte Uso de Junos PyEZ para ejecutar RPC en dispositivos que ejecutan Junos OS.

Uso de comandos del modo operativo en scripts de eventos

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

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

Si el resultado solo incluye elementos de etiqueta como <output>, <cli>, y <banner>, es posible que el comando no tenga un XML equivalente. En el siguiente ejemplo, el resultado indica que el show host comando no tiene xml equivalente:

Nota:

Para algunos comandos que tienen un equivalente XML, la salida del comando canalado | display xml no incluye elementos de etiqueta distintos a <output>, <cli>y <banner> solo porque la característica correspondiente 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 que el show services cos statistics forwarding-class | display xml comando muestre. El resultado es similar a este:

Por esta razón, la información en la Referencia del desarrollador operativo de la API XML de Junos suele ser más confiable.

Los scripts de eventos SLAX y XSLT pueden ejecutar comandos que no tienen xml equivalente. Utilice los <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 se expande y se describe completamente en el ejemplo: Mostrar información de nombre de host DNS mediante una secuencia de comandos operativo.

Los scripts de eventos de Python pueden ejecutar comandos que no tienen 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 la salida en formato de texto. Por ejemplo:

También puede especificar format='xml' que devuelva la salida formateada 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 .