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.