Especificar el formato de salida para las solicitudes de información operativa en una sesión de NETCONF
En una sesión de NETCONF, para solicitar información sobre un dispositivo Junos, una aplicación cliente emite un elemento que incluye un <rpc>
elemento de etiqueta de solicitud XML de Junos. Para solicitar que el servidor NETCONF devuelva el resultado en un formato específico, la aplicación cliente incluye el atributo opcional format
en la etiqueta de solicitud operativa de apertura. La aplicación puede solicitar resultados en formato etiquetado con lenguaje de marcado extensible (XML), notación de objetos JavaScript (JSON) o texto ASCII con formato. La sintaxis es la siguiente:
<rpc> <operational-request format="(ascii | json | json-minified | text | xml | xml-minified)"> <!-- tag elements for options --> </operational-request> </rpc>
En la Tabla 1 se describen los formatos disponibles. Los formatos minimizados eliminan caracteres que no son necesarios para el procesamiento del equipo, por ejemplo, espacios, tabulaciones y nuevas líneas. Los formatos minimizados disminuyen el tamaño de los datos y, como resultado, pueden reducir los costos de transporte y los tiempos de entrega y procesamiento de datos.
format Descripción del valor del atributo |
|
---|---|
ascii |
Texto ASCII con formato |
json |
Notación de objetos JavaScript (JSON) |
json-minified |
Formato JSON con espacios, tabulaciones y líneas nuevas innecesarias eliminadas |
text |
Texto ASCII con formato |
xml |
Formato etiquetado XML de Junos |
xml-minified |
Formato etiquetado con XML de Junos con espacios, tabulaciones y líneas nuevas innecesarias eliminadas |
Formato XML
De forma predeterminada, el servidor NETCONF devuelve información operativa en formato XML. Si el atributo se establece en o si se format
omite, el format
servidor devuelve la respuesta en xml
XML. En el ejemplo siguiente se solicita información para la interfaz ge-0/3/0 y se omite el format
atributo.
<rpc> <get-interface-information> <brief/> <interface-name>ge-0/3/0</interface-name> </get-interface-information> </rpc> ]]>]]>
El servidor NETCONF devuelve la información en formato XML, que es idéntico a la salida mostrada en la CLI cuando anexa el | display xml
filtro al comando de modo operativo.
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:junos="http://xml.juniper.net/junos/11.4R1/junos"> <interface-information xmlns="http://xml.juniper.net/junos/11.4R1/junos-interface" junos:style="brief"> <physical-interface> <name>ge-0/3/0</name> <admin-status junos:format="Enabled">up</admin-status> <oper-status>down</oper-status> <link-level-type>Ethernet</link-level-type> <mtu>1514</mtu> <source-filtering>disabled</source-filtering> <speed>1000mbps</speed> <bpdu-error>none</bpdu-error> <l2pt-error>none</l2pt-error> <loopback>disabled</loopback> <if-flow-control>enabled</if-flow-control> <if-auto-negotiation>enabled</if-auto-negotiation> <if-remote-fault>online</if-remote-fault> <if-device-flags> <ifdf-present/> <ifdf-running/> <ifdf-down/> </if-device-flags> <if-config-flags> <iff-hardware-down/> <iff-snmp-traps/> <internal-flags>0x4000</internal-flags> </if-config-flags> <if-media-flags> <ifmf-none/> </if-media-flags> </physical-interface> </interface-information> </rpc-reply> ]]>]]>
Las RPC de comandos operativos también admiten la devolución de resultados XML en formato minificado, lo que omite espacios, tabulaciones y líneas nuevas innecesarias. Para solicitar una salida XML minimizada en versiones compatibles, incluya el format="xml-minified"
atributo en la etiqueta de solicitud de apertura. Por ejemplo:
<rpc> <get-interface-information format="xml-minified"> <brief/> <interface-name>ge-0/3/0</interface-name> </get-interface-information> </rpc> ]]>]]>
El servidor NETCONF devuelve la información en formato XML minimizado.
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:junos="http://xml.juniper.net/junos/21.1R1/junos"> <interface-information xmlns="http://xml.juniper.net/junos/21.1R1/junos-interface" junos:style="brief"><physical-interface><name>ge-0/3/0</name><admin-status junos:format="Enabled">up</admin-status><oper-status>down</oper-status><link-level-type>Ethernet</link-level-type><mtu>1514</mtu><source-filtering>disabled</source-filtering><speed>1000mbps</speed><bpdu-error>none</bpdu-error><l2pt-error>none</l2pt-error><loopback>disabled</loopback><if-flow-control>enabled</if-flow-control><if-auto-negotiation>enabled</if-auto-negotiation><if-remote-fault>online</if-remote-fault><if-device-flags><ifdf-present/><ifdf-running/><ifdf-down/></if-device-flags><if-config-flags><iff-hardware-down/><iff-snmp-traps/><internal-flags>0x4000</internal-flags></if-config-flags><if-media-flags><ifmf-none/></if-media-flags></physical-interface></interface-information></rpc-reply>]]>]]>
Formato JSON
A partir de Junos OS versión 14.2, puede mostrar datos operativos y de configuración en formato JSON. Para solicitar que el servidor NETCONF devuelva información operativa en formato JSON, la aplicación cliente incluye el format="json"
atributo en la etiqueta de solicitud operativa de apertura.
<rpc> <get-interface-information format="json"> <brief/> <interface-name>cbp0</interface-name> </get-interface-information> </rpc> ]]>]]>
Cuando la aplicación cliente incluye el atributo en la etiqueta de solicitud, el format="json"
servidor NETCONF da formato a la respuesta mediante JSON.
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:junos="http://xml.juniper.net/junos/16.1R1/junos"> { "interface-information" : [ { "attributes" : {"xmlns" : "http://xml.juniper.net/junos/16.1R1/junos-interface", "junos:style" : "brief" }, "physical-interface" : [ { "name" : [ { "data" : "cbp0" } ], "admin-status" : [ { "data" : "up", "attributes" : {"junos:format" : "Enabled"} } ], "oper-status" : [ { "data" : "up" } ], "if-type" : [ { "data" : "Ethernet" } ], "link-level-type" : [ { "data" : "Ethernet" } ], "mtu" : [ { "data" : "1514" } ], "speed" : [ { "data" : "Unspecified" } ], "clocking" : [ { "data" : "Unspecified" } ], "if-device-flags" : [ { "ifdf-present" : [ { "data" : [null] } ], "ifdf-running" : [ { "data" : [null] } ] } ], "ifd-specific-config-flags" : [ { "internal-flags" : [ { "data" : "0x0" } ] } ], "if-config-flags" : [ { "iff-snmp-traps" : [ { "data" : [null] } ] } ] } ] } ] } </rpc-reply> ]]>]]>
A partir de Junos OS versión 17.3R1, los dispositivos que ejecutan Junos OS admiten la emisión del estado operativo del dispositivo en formato JSON compacto, en el que solo los objetos que tienen varios valores se emiten como matrices JSON. Para configurar el dispositivo para que emita un formato JSON compacto, configure la compact
instrucción en el nivel de [edit system export-format state-data json]
jerarquía.
Los RPC de comandos operativos también admiten la devolución de salida JSON en formato minificado, lo que omite espacios, tabulaciones y líneas nuevas innecesarias. Para solicitar una salida JSON minimizada en versiones compatibles, incluya el format="json-minified"
atributo en la etiqueta de solicitud de apertura. Por ejemplo:
<rpc> <get-interface-information format="json-minified"> <brief/> <interface-name>cbp0</interface-name> </get-interface-information> </rpc> ]]>]]>
El servidor NETCONF devuelve la información en formato JSON minimizado.
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:junos="http://xml.juniper.net/junos/21.1R1/junos"> {"interface-information":[{"physical-interface":[{"name":[{"data":"cbp0"}],"admin-status":[{"data":"up","attributes":{"junos:format":"Enabled"}}],"oper-status":[{"data":"up"}],"if-type":[{"data":"Ethernet"}],"link-level-type":[{"data":"Ethernet"}],"mtu":[{"data":"9192"}],"speed":[{"data":"Unspecified"}],"clocking":[{"data":"Unspecified"}],"if-device-flags":[{"ifdf-present":[{"data":[null]}],"ifdf-running":[{"data":[null]}]}],"ifd-specific-config-flags":[{}],"if-config-flags":[{"iff-snmp-traps":[{"data":[null]}]}]}]}]}</rpc-reply> ]]>]]>
Formato ASCII
Para solicitar que el servidor NETCONF devuelva información operativa como texto ASCII con formato en lugar de etiquetarla con elementos de etiqueta XML de Junos, la aplicación cliente incluye el format="text"
atributo or format="ascii"
en la etiqueta de solicitud de apertura.
<rpc> <get-interface-information format="(text | ascii)"> <brief/> <interface-name>ge-0/3/0</interface-name> </get-interface-information> </rpc> ]]>]]>
Cuando la aplicación cliente incluye el atributo o format="ascii"
en la etiqueta de solicitud, el format="text"
servidor NETCONF da formato a la respuesta como texto ASCII y la encierra en un elemento de <output>
etiqueta. Los format="text"
atributos y format="ascii"
producen resultados idénticos.
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:junos="http://xml.juniper.net/junos/11.4R1/junos"> <output> Physical interface: ge-0/3/0, Enabled, Physical link is Down Link-level type: Ethernet, MTU: 1514, Speed: 1000mbps, Loopback: Disabled, Source filtering: Disabled, Flow control: Enabled, Auto-negotiation: Enabled, Remote fault: Online Device flags : Present Running Down Interface flags: Hardware-Down SNMP-Traps Internal: 0x4000 Link flags : None </output> </rpc-reply> ]]>]]>
En el ejemplo siguiente se muestra el comando de modo operativo equivalente ejecutado en la CLI:
user@host> show interfaces ge-0/3/0 brief Physical interface: ge-0/3/0, Enabled, Physical link is Down Link-level type: Ethernet, MTU: 1514, Speed: 1000mbps, Loopback: Disabled, Source filtering: Disabled, Flow control: Enabled, Auto-negotiation: Enabled, Remote fault: Online Device flags : Present Running Down Interface flags: Hardware-Down SNMP-Traps Internal: 0x4000 Link flags : None
El texto ASCII con formato devuelto por el servidor NETCONF es idéntico a la salida de la CLI, excepto en los casos en que la salida incluye caracteres no permitidos, como '<' (signo menor que), '>' (signo mayor que) y '&' (ampersand). El servidor NETCONF sustituye estos caracteres por la referencia de entidad predefinida equivalente de '<', '>' y '&' respectivamente.
Si la API XML de Junos no define un elemento de etiqueta de respuesta para el tipo de resultado solicitado por una aplicación cliente, el servidor NETCONF devuelve la respuesta como texto ASCII con formato encerrado en un elemento de etiqueta, incluso si se solicita un <output>
resultado con etiqueta XML.
El contenido y el formato de los datos de un <output>
elemento de etiqueta están sujetos a cambios, por lo que las aplicaciones cliente no deben depender de ellos.