Especifique o formato de saída para solicitações de informações operacionais em uma sessão netconf
Em uma sessão netconf, para solicitar informações sobre um dispositivo Junos, um aplicativo do cliente emite um <rpc>
elemento que inclui um elemento de tag de solicitação Junos XML. Para solicitar que o servidor NETCONF devolva a saída em um formato específico, o aplicativo do cliente inclui o atributo opcional format
na tag de solicitação operacional de abertura. O aplicativo pode solicitar saída no formato Extensible Markup Language (XML)-taged, JavaScript Object Notation (JSON) ou texto ASCII formatado. A sintaxe é a seguinte:
<rpc> <operational-request format="(ascii | json | json-minified | text | xml | xml-minified)"> <!-- tag elements for options --> </operational-request> </rpc>
A Tabela 1 descreve os formatos disponíveis. Formatos minificados removem caracteres que não são necessários para o processamento de computador, por exemplo, espaços, guias e novas linhas. Formatos minificados diminuem o tamanho dos dados e, como resultado, podem reduzir os custos de transporte e os tempos de entrega e processamento de dados.
format Descrição do valor do atributo |
|
---|---|
ascii |
Texto ASCII formatado |
json |
Notação de objetos JavaScript (JSON) |
json-minified |
Formato JSON com espaços, guias e novas linhas desnecessários removidos |
text |
Texto ASCII formatado |
xml |
Formato junos XML-taged |
xml-minified |
Formato marcado pelo Junos XML com espaços, guias e novas linhas desnecessários removidos |
Formato XML
Por padrão, o servidor NETCONF devolve informações operacionais no formato XML. Se o format
atributo for definido para xml
ou se o format
atributo for omitido, o servidor retorna a resposta em XML. O exemplo a seguir solicita informações para a interface ge-0/3/0 e omite o format
atributo.
<rpc> <get-interface-information> <brief/> <interface-name>ge-0/3/0</interface-name> </get-interface-information> </rpc> ]]>]]>
O servidor NETCONF devolve as informações no formato XML, que é idêntico à saída exibida no CLI quando você aplica o | display xml
filtro ao comando do modo operacional.
<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> ]]>]]>
Os RPCs de comando operacional também oferecem suporte ao retorno da saída XML em formato minificado, omitindo espaços desnecessários, guias e novas linhas. Para solicitar a saída XML minificada em versões suportadas, inclua o format="xml-minified"
atributo na tag de solicitação de abertura. Por exemplo:
<rpc> <get-interface-information format="xml-minified"> <brief/> <interface-name>ge-0/3/0</interface-name> </get-interface-information> </rpc> ]]>]]>
O servidor NETCONF devolve as informações em formato XML minificado.
<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 do Junos OS Release 14.2, você pode exibir dados operacionais e de configuração no formato JSON. Para solicitar que o servidor NETCONF devolva informações operacionais no formato JSON, o aplicativo do cliente inclui o format="json"
atributo na tag de solicitação operacional de abertura.
<rpc> <get-interface-information format="json"> <brief/> <interface-name>cbp0</interface-name> </get-interface-information> </rpc> ]]>]]>
Quando o aplicativo do cliente inclui o format="json"
atributo na tag de solicitação, o servidor NETCONF formata a resposta usando 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 do Junos OS Release 17.3R1, os dispositivos que executam o Junos OS oferecem suporte ao estado operacional do dispositivo em formato JSON compacto, no qual apenas objetos com vários valores são emitidos como arranjos JSON. Para configurar o dispositivo para emitir o formato JSON compacto, configure a compact
declaração no nível de [edit system export-format state-data json]
hierarquia.
Os RPCs de comando operacional também oferecem suporte ao retorno da saída JSON em formato minificado, que omite espaços desnecessários, guias e novas linhas. Para solicitar a saída JSON minificada em versões suportadas, inclua o format="json-minified"
atributo na tag de solicitação de abertura. Por exemplo:
<rpc> <get-interface-information format="json-minified"> <brief/> <interface-name>cbp0</interface-name> </get-interface-information> </rpc> ]]>]]>
O servidor NETCONF devolve as informações em formato JSON mínimo.
<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 o servidor NETCONF devolva informações operacionais conforme texto ASCII formatado em vez de marcá-los com elementos de tag Junos XML, o aplicativo do cliente inclui o format="text"
ou format="ascii"
atributo na tag de solicitação de abertura.
<rpc> <get-interface-information format="(text | ascii)"> <brief/> <interface-name>ge-0/3/0</interface-name> </get-interface-information> </rpc> ]]>]]>
Quando o aplicativo do cliente inclui o format="text"
ou format="ascii"
atributo na tag de solicitação, o servidor NETCONF formata a resposta como texto ASCII e a inclui em um <output>
elemento de tag. Os format="text"
atributos produzem format="ascii"
uma saída idêntica.
<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> ]]>]]>
O exemplo a seguir mostra o comando de modo operacional equivalente executado na 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
O texto ASCII formatado devolvido pelo servidor NETCONF é idêntico à saída de CLI, exceto nos casos em que a saída inclua caracteres desautorizados, como '<' (menos que sinal), '>' (maior que sinal) e '&ersand). O servidor NETCONF substitui esses caracteres com a referência de entidade predefinida equivalente de '<', '>' e '&', respectivamente.
Se a API Junos XML não definir um elemento de tag de resposta para o tipo de saída solicitado por um aplicativo do cliente, o servidor NETCONF retorna a resposta como texto ASCII formatado fechado em um <output>
elemento de tag, mesmo se a saída marcada por XML for solicitada.
O conteúdo e a formatação de dados dentro de um <output>
elemento de tag estão sujeitos a alterações, de modo que os aplicativos do cliente não devem depender deles.