Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Definir tablas operativas de Junos PyEZ para analizar resultados no estructurados

RESUMEN Cree tablas personalizadas que seleccionen datos de la salida del comando CLI o vty para extraer información operativa de un dispositivo Junos.

Las tablas operativas (op) de Junos PyEZ para salida no estructurada extraen datos de la salida de texto de un comando CLI ejecutado en un dispositivo Junos o un comando vty ejecutado en un concentrador PIC flexible (FPC) determinado. A continuación, los datos extraídos se convierten a JSON. Esto le permite recuperar y analizar rápidamente la información del estado operativo del dispositivo. Las tablas op de Junos PyEZ para salida no estructurada son particularmente útiles cuando necesita analizar la salida de comando que no se puede devolver en un formato estructurado como XML.

En este tema se describen los distintos componentes de la tabla.

Resumen de parámetros en tablas Op para analizar resultados no estructurados

Las tablas PyEZ de Junos se formatean con YAML. Las definiciones de Op Table pueden incluir una serie de parámetros obligatorios y opcionales, que se resumen en la Tabla 1.

Tabla 1: Parámetros en las tablas Op de Junos PyEZ para resultados no estructurados

Nombre del parámetro de tabla

Parámetro de tabla

Descripción

Nombre de la tabla

Identificador definido por el usuario para la tabla.

Comando

command

Comando CLI o vty para ejecutar.

Argumentos de comando

args

(Opcional) Cuando se define el comando como una plantilla Jinja, args es una matriz asociativa, o diccionario, de pares clave-valor que asignan las variables de la plantilla de comando a los valores predeterminados utilizados cuando se representa la plantilla.

FPC de destino

target

(Opcional) Concentrador PIC flexible (FPC) en el que ejecutar un comando vty.

Elemento de tabla

item

(Opcional) Cadena o expresión regular que define cómo dividir el resultado en secciones. Estas secciones se convierten en la referencia iterable para la vista asociada.

Especifique '*' para extraer y hacer coincidir toda la cadena en lugar de cada línea.

Clave del elemento de tabla

key

(Opcional) Cadena o lista de cadenas que definen una o más claves que identifican de forma exclusiva cada elemento de tabla.

Teclas seleccionadas

key_items

(Opcional) Lista de una o más claves de elementos de tabla para las que devolver datos.

Título de la sección

title

(Opcional) Cadena que selecciona la sección de salida que contiene los datos que se van a analizar.

Delimitador de campo

delimiter

(Opcional) Delimitador que define cómo dividir los datos en la salida del comando compuesta por pares clave-valor. Los datos extraídos se almacenan como pares clave-valor en un diccionario.

Expresión eval

eval

(Opcional) Matriz asociativa, o diccionario, de uno o más pares clave-valor que asignan una clave definida por el usuario a una cadena que contiene una expresión matemática. Cuando se recuperan los datos, la expresión se evalúa mediante la función de Python eval . La clave y el valor calculado se agregan a los datos finales devueltos por la tabla y la vista.

Vista de tabla

view

(Opcional) Vista que se utiliza para extraer datos de campo de los elementos de tabla.

Plantilla TextFSM

use_textfsm

(Opcional) Booleano que especifica si se usa una plantilla TextFSM para analizar los datos.

Identificador de plataforma de plantilla TextFSM

platform

(Opcional) Cuando se utilice una plantilla de TextFSM, especifique la plataforma para la plantilla.

Nombre de la tabla

El nombre de la tabla es un identificador definido por el usuario para la tabla. El archivo o cadena YAML puede contener una o varias tablas. El inicio del documento YAML debe dejarse justificado. En el ejemplo siguiente se define una tabla denominada ChassisFanTable:

Comando

Una tabla op de Junos PyEZ para salida no estructurada extrae datos de la salida de texto de un comando CLI o vty. Debe incluir la command propiedad en la definición de tabla para especificar el comando de CLI que se ejecutará en un dispositivo o el comando vty que se ejecutará en un FPC determinado. Puede definir el comando como una cadena simple o una plantilla Jinja.

Por ejemplo, la siguiente tabla ejecuta el show chassis fan comando en el dispositivo.

En la tabla siguiente se ejecuta el show cmerror module brief comando vty en la FPC de destino.

Cuando defina el comando como una plantilla Jinja, también debe proporcionar el args parámetro con un diccionario de pares clave-valor que asignen las variables de la plantilla a los valores utilizados cuando se representa la plantilla. Para obtener información acerca de cómo definir el comando como una plantilla Jinja, vea Argumentos de comando (args).

Argumentos de comando (args)

Puede definir el comando de CLI o vty para el parámetro mediante una plantilla Jinja y sustituir variables por los argumentos del command comando. Cuando utilice una plantilla Jinja, también debe definir el args parámetro, que es un diccionario de pares clave-valor que asigna los nombres de variables de la plantilla Jinja a los valores utilizados cuando se representa la plantilla. Puede proporcionar valores predeterminados para las variables de plantilla en la definición de tabla y también puede definir los valores en la aplicación Junos PyEZ.

Para definir valores predeterminados para las variables de plantilla, incluya el args parámetro en la definición de tabla y asigne cada variable de plantilla a su valor predeterminado. En la tabla siguiente se define un comando mediante una plantilla Jinja que tiene una variable, protocol. El args parámetro define el valor predeterminado de protocol, que se utiliza cuando se llama al método en la get() secuencia de comandos y no proporciona un argumento que invalide ese valor predeterminado.

Además, puede definir el args argumento como un diccionario en el método de get() la tabla para:

  • definir un valor para cualquier variable de plantilla que no tenga un valor predeterminado definido en la tabla

  • invalidar el valor predeterminado definido en la tabla para una o más variables de plantilla

En el ejemplo siguiente se ejecuta el comando de la tabla anterior utilizando el protocolo 'bgp' en lugar del valor predeterminado de 'ospf'.

FPC de destino (fpc)

Las tablas op de Junos PyEZ pueden ejecutar comandos vty en un concentrador PIC flexible (FPC) específico. Cuando se utiliza un comando vty, la tabla debe incluir el target parámetro para definir el FPC de destino. Puede establecer target y Null forzar al usuario a especificar la FPC de destino en la aplicación, o puede establecer target en una FPC predeterminada y, opcionalmente, el usuario puede invalidar este valor en la aplicación.

En la tabla siguiente se ejecuta el show memory comando vty, pero se establece target: Null, que requiere que el usuario proporcione la FPC de destino en la aplicación Junos PyEZ:

En la tabla siguiente se ejecuta el show memory comando vty en FPC 1, a menos que el usuario invalide este valor en la aplicación Junos PyEZ.

En la aplicación Junos PyEZ, para definir la FPC de destino o invalidar la FPC predeterminada definida en la tabla, establezca el target argumento del método de get() la tabla en la FPC deseada, por ejemplo:

Elemento de tabla (elemento)

La propiedad Table item opcional es una cadena o expresión regular que define cómo dividir la salida del comando para el análisis. Si el resultado tiene conjuntos de datos similares y repetitivos, puede definir item para que coincidan y extraigan cada iteración de los datos. Por ejemplo, show interfaces devuelve un conjunto similar de datos para muchas interfaces. Alternativamente, puede definir item: '*' cuándo necesita extraer los datos como un solo bloque de texto.

Tenga en cuenta el siguiente resultado para el show devices local comando vty:

En la tabla siguiente se extrae cada sección del resultado que comienza por TSEC Ethernet Device Driver:. En este caso, el valor de se key: name deriva del grupo de captura en la expresión regular definida en item.

También puede definir item como un asterisco ('*') si desea hacer coincidir con toda la sección de salida en lugar de hacer coincidir cada línea. Cuando se incluye item: '*', en la mayoría de los casos, también se debe incluir el title parámetro para especificar el encabezado de la sección de salida que se va a extraer. La extracción del resultado mediante item: '*' es útil cuando se incluye el regex parámetro en una vista y se desea que cada expresión coincida con toda la cadena de texto. De lo contrario, las regex expresiones se combinan y se combinan con cada línea.

En la tabla siguiente se extrae el bloque de texto bajo el encabezado Receive: y se compara cada expresión regular con toda la cadena de texto:

Clave de elemento de tabla (clave)

La propiedad opcional key define los campos de salida que se utilizan para identificar de forma exclusiva un elemento de tabla. Puede identificar un elemento de tabla utilizando una sola clave o una lista de claves. Si la tabla y la vista devuelven datos iterativos, el valor debe hacer referencia a una variable o nombre de key campo definido en la vista.

Considere el siguiente show chassis fan resultado:

En la tabla siguiente se define la clave del elemento de tabla como fan-name, que se asigna al valor situado debajo de la Item columna de la salida.

Al recuperar e imprimir los datos en la aplicación Junos PyEZ, cada elemento del diccionario resultante utiliza el valor de este campo como clave.

También puede definir key como una lista para identificar un elemento de tabla mediante una clave compuesta. Por ejemplo:

Teclas seleccionadas (key_items)

El key parámetro define los campos de salida que identifican de forma exclusiva un elemento de tabla. Cuando se incluye el key parámetro en una tabla, puede utilizar el parámetro opcional key_items para devolver sólo datos para determinados valores de clave. key_items define la clave o lista de claves de los elementos de tabla para los que se recuperarán datos. Puede definir el key_items parámetro en la definición de tabla o en la aplicación Junos PyEZ.

Considere el siguiente show chassis fan resultado:

En la tabla siguiente se define la clave del elemento de tabla como fan-name y sólo se recuperan los datos del elemento de tabla con un valor de clave igual a Fan 1.

En la aplicación Junos PyEZ, para definir el key_items devolver o reemplazar el key_items definido en la tabla, establezca el key_items argumento del método de get() la tabla en una lista o tupla de los elementos deseados, por ejemplo:

Título de la sección (título)

Las tablas pueden incluir el parámetro opcional title para definir el punto de partida de una sección de la salida del comando de la que extraer y analizar los datos. Cuando la tabla define item: '*', debe incluir title para especificar el encabezado de la sección de salida que se va a extraer

Por ejemplo, considere la siguiente salida de comando, que está encerrada dentro de un conjunto mayor de salida:

En la tabla siguiente se utiliza el title parámetro para extraer y analizar datos de la TSEC status counters sección de la salida. En este caso, la tabla se define item como '*', que considera los datos como una sola cadena de texto.

Delimitador de campo (delimitador)

Algunos comandos operativos devuelven resultados compuestos solo por pares clave-valor. Si simplemente desea recuperar todo el conjunto de datos y extraer cada par clave-valor, puede usar el delimiter parámetro para definir cómo dividir cada par de datos en lugar de definir una vista independiente. Junos PyEZ utiliza el delimitador para dividir los datos en el límite especificado y almacena cada par clave-valor en un diccionario.

Considere el siguiente resultado para el show link stats comando vty.

En la tabla siguiente se define el delimitador como el carácter de dos puntos (:)):

Cuando se recuperan los datos en la aplicación Junos PyEZ, la tabla divide cada línea de salida en el delimitador y almacena los pares clave-valor en un diccionario.

Expresión eval (eval)

Puede utilizar el parámetro opcional eval para agregar o modificar pares clave-valor en los datos finales devueltos por la tabla y la vista. El eval parámetro asigna un nombre de clave a una cadena que contiene una expresión matemática que es evaluada por la función Python eval . Puede incluir el eval parámetro tanto en tablas como en vistas, y eval puede definir y calcular varios valores.

Cuando se utiliza eval en una tabla, hace referencia al diccionario de datos completo para el cálculo, y la clave y el valor calculado se agregan como un único elemento adicional al diccionario. Cuando se utiliza eval en una vista, la expresión se calcula en cada iteración de los datos y el valor calculado se agrega a los datos para esa iteración. Si el nombre de clave eval coincide con una clave definida en la vista, eval reemplaza el valor de esa clave por el valor calculado. Si el nombre de clave eval no coincide con una clave definida en la vista, eval agrega la nueva clave y el valor calculado a los datos.

La eval expresión puede hacer referencia al data diccionario devuelto por la vista. La expresión debe hacer referencia data mediante una variable de plantilla Jinja, de modo que Junos PyEZ pueda reemplazar la variable con el diccionario cuando se evalúe la expresión.

En el ejemplo siguiente se utiliza eval la definición de tabla para incluir una sola entrada adicional en el diccionario de datos. La clave del elemento agregado es cchip_errors_from_lkup_chip, y su valor es la suma del número de interrupciones.

También puede definir eval en la tabla para calcular y agregar varios pares clave-valores, por ejemplo:

Para obtener información acerca del uso eval en una vista, vea Expresión Eval (eval).

Vista de tabla (ver)

La view propiedad asocia la definición de tabla con una vista determinada. Una vista define cómo se debe analizar la salida de la tabla y asigna los nombres de variables de Python definidos por el usuario a los campos de salida en los elementos de tabla seleccionados. Puede personalizar la vista para seleccionar solo determinados campos de los elementos de tabla.

Si el resultado solo consta de pares clave-valor, puede usar el parámetro Table delimiter para extraer los datos y almacenar los pares clave-valor en un diccionario. En este caso, no es necesario definir una vista independiente.

Plantillas TextFSM (plataforma y use_textfsm)

Las tablas PyEZ de Junos pueden hacer referencia a una plantilla de TextFSM para analizar la salida de comandos de los dispositivos de Juniper Networks o de otros proveedores. Debe instalar la ntc-templates biblioteca en su servidor Junos PyEZ o entorno virtual para poder utilizar las plantillas de TextFSM en sus tablas.

Para usar una plantilla TextFSM para analizar la salida del comando, inclúyala use_textfsm: True en la tabla. Puede utilizar una plantilla de TextFSM sola o junto con una vista Junos PyEZ. Junos PyEZ utiliza los platform valores y command para determinar el nombre de archivo de la plantilla.

Por ejemplo, la siguiente tabla utiliza la plantilla juniper_junos_show_arp_no-resolve.textfsm para analizar la salida del comando desde un dispositivo Junos de Juniper Networks:

Para obtener información detallada sobre el uso de tablas de Junos PyEZ con plantillas de TextFSM, consulte Usar tablas de Junos PyEZ con plantillas de TextFSM.