Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Utilice tablas y vistas operativas de Junos PyEZ que analicen la salida estructurada

Las tablas operativas (operativas) de Junos PyEZ para salida estructurada extraen datos específicos de la salida XML de una RPC ejecutada en un dispositivo Junos. Después de cargar o importar la definición de tabla en el módulo Python, puede recuperar los elementos de tabla y extraer y manipular los datos.

Para recuperar información de un dispositivo específico, debe crear una instancia de Table y asociarla al Device objeto que representa el dispositivo de destino. Por ejemplo:

En las siguientes secciones se explica cómo recuperar y manipular los datos:

Recuperar elementos de tabla

La propiedad Table item determina qué elementos se extraen del resultado del comando operativo. Por ejemplo, la definición EthPortTable de Junos PyEZ, que se incluye aquí como referencia, ejecuta el show interfaces "[afgxe][et]-*" media comando de forma predeterminada y extrae los physical-interface elementos de la salida.

Para recuperar los elementos table en la secuencia de comandos de Python, llame al get() método y proporcione los argumentos deseados. Si la definición de tabla incluye argumentos predeterminados en la args propiedad, la RPC ejecutada incluye automáticamente estos argumentos cuando se llama a get() menos que los invalide en la lista de argumentos.

Para recuperar todos los elementos table, llame al get() método con una lista de argumentos vacía.

También puede recuperar elementos de tabla específicos pasando opciones de comando como argumentos al get() método. Si la opción de comando es una marca que no toma un valor, establezca la opción igual a True en la lista de argumentos. De lo contrario, incluya el argumento y el valor deseado como par clave-valor en la lista de argumentos. Puede revisar los posibles argumentos de los comandos operativos en la CLI de Junos.

De forma predeterminada, EthPortTable devuelve información para interfaces Ethernet que tienen nombres que coincidan con la expresión "[afgxe][et]-*". Para recuperar el elemento Table solo para la interfaz ge-0/3/0, incluya interface_name='ge-0/3/0' como argumento a get().

Nota:

Si el nombre de la opción en la interfaz de línea de comandos (CLI) de Junos OS está guionado, debe cambiar los guiones del nombre a guiones bajos. Sin embargo, el valor del argumento es una cadena y, como tal, puede contener guiones.

Si el comando de la CLI toma un primer argumento opcional que no requiere que especifique explícitamente un nombre de opción o una palabra clave, puede omitir el nombre de opción en la lista de argumentos de get() método siempre que la propiedad Table args_key haga referencia a este argumento. En el ejemplo siguiente, el show interfaces comando toma un nombre de interfaz como argumento opcional:

La propiedad de definición args_key EthPortTable define el argumento opcional como interface_name, lo que le permite utilizar este argumento sin tener que especificar explícitamente el nombre de opción en la lista de argumentos del get() método.

De forma predeterminada, Junos PyEZ normaliza todas las claves y valores de la tabla de operaciones, lo que elimina todos los espacios en blanco iniciales y finales y reemplaza secuencias de caracteres de espacios en blanco internos por un solo espacio. Para deshabilitar la normalización, incluya normalize=False como argumento al get() método.

Elementos de tabla de acceso

Después de recuperar los elementos de tabla, puede tratarlos como un diccionario de Python, lo que le permite usar métodos en la biblioteca estándar de Python para acceder y manipular los elementos.

Para ver la lista de claves de diccionario correspondientes a los nombres de elemento de tabla, llame al keys() método.

En este caso, solo hay una sola clave.

Puede comprobar que una clave específica está presente en los elementos de tabla mediante el operador Python in .

Para ver una lista de los campos o valores asociados con cada clave, llame al values() método. El values() método devuelve una lista de tuplas con los pares nombre-valor para cada campo que se definió en la vista.

Para ver la lista completa de elementos, incluidas las claves y los valores, llame al items() método.

Cómo iterar a través de una tabla

Las tablas admiten iteración, lo que le permite recorrer cada elemento table de la misma manera que recorrería una lista o un diccionario. Esto facilita el formatear e imprimir rápidamente los campos deseados.

La definición EthPortTable, que se incluye en el jnpr.junos.op módulo, ejecuta el show interfaces "[afgxe][et]-*" media comando y extrae los physical-interface elementos de la salida. El siguiente código recorre los elementos e imprime el physical-interface nombre y el estado operativo de cada puerto Ethernet:

El oper campo, que se define en EthPortView, corresponde al valor del oper-status elemento en el resultado. La definición EthPortView no define un name campo. De forma predeterminada, cada elemento view tiene una name propiedad que hace referencia a la clave que identifica de forma única ese elemento.

El resultado incluye el nombre de interfaz y el estado operativo.