Especifique o formato de saída para solicitações de informações operacionais em uma sessão de protocolo Junos XML
Em uma sessão de protocolo Junos XML, para solicitar informações sobre uma plataforma de roteamento, comutação ou segurança que executa o Junos OS, um aplicativo do cliente inclui um elemento de tag de solicitação Junos XML em um <rpc>
elemento de tag. Ao definir o atributo opcional format
na tag de solicitação operacional de abertura, o aplicativo do cliente pode especificar a formatação da saída devolvida pelo servidor de protocolo Junos XML. As informações podem ser devolvidas como formato marcado por XML, Notação de objetos JavaScript (JSON) ou texto ASCII formatado. A sintaxe básica é a seguinte:
<rpc> <operational-request format="(ascii | json | text | xml)"> <!-- tag elements for options --> </operational-request> </rpc>
Formato XML
Por padrão, o servidor de protocolo Junos XML devolve informações operacionais em formato XML marcado. Se o valor do format
atributo for definido como "xml", ou se o format
atributo for omitido, o servidor retorna a resposta no XML. O exemplo a seguir solicita informações para a interface ge-0/3/0. O format
atributo é omitido.
<rpc> <get-interface-information> <brief/> <interface-name>ge-0/3/0</interface-name> </get-interface-information> </rpc>
O servidor de protocolo Junos XML devolve as informações em formato XML marcado, que é idêntico à saída exibida na CLI quando você inclui a opção | display xml
após o comando do modo operacional.
<rpc-reply 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>
Formato ASCII
Para solicitar que o servidor de protocolo Junos XML devolva informações operacionais conforme texto ASCII formatado em vez de marcá-lo 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. A aplicação do cliente inclui a solicitação em um <rpc>
elemento de tag.
<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 de protocolo Junos XML formata a resposta como texto ASCII e a coloca em um <output>
elemento de tag. Os format="text"
atributos e format="ascii"
os atributos produzem saída idêntica.
<rpc-reply 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 em formato retornado pelo servidor de protocolo Junos XML é idêntico à saída CLI, exceto nos casos em que a saída inclua caracteres desautorizados, como '<' (menos que sinal), '>' (maior que sinal) e '&ersand). O servidor de protocolo Junos XML 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 de protocolo Junos XML retorna a resposta como texto ASCII formatado em um <output>
elemento de tag, mesmo que a saída marcada pelo XML seja solicitada.
Para obter informações sobre o <output>
elemento tag, consulte a referência do desenvolvedor operacional de API Junos XML.
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.
Formato JSON
A partir do Junos OS Release 14.2, um aplicativo do cliente pode solicitar informações operacionais e de configuração em formato JSON. Para solicitar que o servidor de protocolo Junos XML devolva informações operacionais usando o formato JSON em vez de marcá-los com elementos de tag Junos XML, o aplicativo do cliente inclui o format="json"
atributo na tag de solicitação de abertura. A aplicação do cliente inclui a solicitação em um <rpc>
elemento de tag.
<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 de protocolo Junos XML formata a resposta usando JSON.
<rpc-reply 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 matrizes JSON. Para configurar o dispositivo para emitir formato JSON compacto, configure a compact
declaração no nível de [edit system export-format state-data json]
hierarquia.
user@host# set system export-format state-data json compact
O exemplo a seguir executa o show system uptime
comando e exibe a saída em formato JSON não compacto e compacto.
user@host> show system uptime | display json
Formato JSON não compacto:
{ "system-uptime-information" : [ { "attributes" : {"xmlns" : "http://xml.juniper.net/junos/18.1R1/junos"}, "current-time" : [ { "date-time" : [ { "data" : "2018-05-15 13:43:46 PDT", "attributes" : {"junos:seconds" : "1526417026"} } ] } ], "time-source" : [ { "data" : " NTP CLOCK " } ], "system-booted-time" : [ { "date-time" : [ { "data" : "2018-05-15 10:57:02 PDT", "attributes" : {"junos:seconds" : "1526407022"} } ], "time-length" : [ { "data" : "02:46:44", "attributes" : {"junos:seconds" : "10004"} } ] } ], "protocols-started-time" : [ { "date-time" : [ { "data" : "2018-05-15 10:59:33 PDT", "attributes" : {"junos:seconds" : "1526407173"} } ], "time-length" : [ { "data" : "02:44:13", "attributes" : {"junos:seconds" : "9853"} } ] } ], "last-configured-time" : [ { "date-time" : [ { "data" : "2018-05-02 17:57:44 PDT", "attributes" : {"junos:seconds" : "1525309064"} } ], "time-length" : [ { "data" : "1w5d 19:46", "attributes" : {"junos:seconds" : "1107962"} } ], "user" : [ { "data" : "admin" } ] } ], "uptime-information" : [ { "date-time" : [ { "data" : "1:43PM", "attributes" : {"junos:seconds" : "1526417026"} } ], "up-time" : [ { "data" : "2:47", "attributes" : {"junos:seconds" : "10034"} } ], "active-user-count" : [ { "data" : "1", "attributes" : {"junos:format" : "1 user"} } ], "load-average-1" : [ { "data" : "0.49" } ], "load-average-5" : [ { "data" : "0.19" } ], "load-average-15" : [ { "data" : "0.10" } ] } ] } ] }
O formato JSON compacto para o mesmo comando é:
{ "system-uptime-information" : { "current-time" : { "date-time" : "2018-05-15 13:49:56 PDT" }, "time-source" : " NTP CLOCK ", "system-booted-time" : { "date-time" : "2018-05-15 10:57:02 PDT", "time-length" : "02:52:54" }, "protocols-started-time" : { "date-time" : "2018-05-15 10:59:33 PDT", "time-length" : "02:50:23" }, "last-configured-time" : { "date-time" : "2018-05-15 13:49:40 PDT", "time-length" : "00:00:16", "user" : "admin" }, "uptime-information" : { "date-time" : "1:49PM", "up-time" : "2:53", "active-user-count" : "1", "load-average-1" : "0.00", "load-average-5" : "0.06", "load-average-15" : "0.06" } } }