Spécifier le format de sortie des requêtes d’informations opérationnelles dans une session NETCONF
Dans une session NETCONF, pour demander des informations sur un équipement Junos, une application cliente émet un <rpc>
élément qui contient un élément de balise de requête XML Junos. Pour demander au serveur NETCONF de renvoyer la sortie dans un format spécifique, l’application cliente inclut l’attribut facultatif format
dans la balise de demande opérationnelle d’ouverture. L’application peut demander la sortie au format XML (Extensible Markup Language) ou au format JSON (JavaScript Object Notation) ou au format ASCII. La syntaxe est la suivante :
<rpc> <operational-request format="(ascii | json | json-minified | text | xml | xml-minified)"> <!-- tag elements for options --> </operational-request> </rpc>
Le tableau 1 décrit les formats disponibles. Les formats minifiés suppriment les caractères qui ne sont pas requis pour le traitement informatique, par exemple les espaces, les onglets et les nouvelles lignes. Les formats minifiés réduisent la taille des données et, par conséquent, peuvent réduire les coûts de transport, ainsi que les délais de livraison et de traitement des données.
format Description de la valeur de l’attribut |
|
---|---|
ascii |
Texte ASCII formaté |
json |
Notation d’objet JavaScript (JSON) |
json-minified |
Format JSON avec suppression des espaces, onglets et nouvelles lignes inutiles |
text |
Texte ASCII formaté |
xml |
Format balisé XML Junos |
xml-minified |
Format balisé XML Junos avec espaces inutiles, onglets et nouvelles lignes supprimés |
XML Format
Par défaut, le serveur NETCONF renvoie les informations opérationnelles au format XML. Si l’attribut format
est défini xml
sur ou si l’attribut format
est omis, le serveur renvoie la réponse au format XML. L’exemple suivant demande des informations pour l’interface ge-0/3/0 et omet l’attribut format
.
<rpc> <get-interface-information> <brief/> <interface-name>ge-0/3/0</interface-name> </get-interface-information> </rpc> ]]>]]>
Le serveur NETCONF renvoie les informations au format XML, qui est identique à la sortie affichée dans l’interface de ligne de commande lorsque vous ajoutez le | display xml
filtre à la commande du mode opérationnel.
<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> ]]>]]>
Les RPC de commande opérationnelle prennent également en charge le retour de la sortie XML dans un format minifié, ce qui omet les espaces inutiles, les onglets et les nouvelles lignes. Pour demander un résultat XML minifié dans les versions prises en charge, ajoutez l’attribut format="xml-minified"
dans la balise de requête d’ouverture. Par exemple :
<rpc> <get-interface-information format="xml-minified"> <brief/> <interface-name>ge-0/3/0</interface-name> </get-interface-information> </rpc> ]]>]]>
Le serveur NETCONF renvoie les informations au format XML minifié.
<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>]]>]]>
JSON Format
À partir de Junos OS Version 14.2, vous pouvez afficher les données opérationnelles et de configuration au format JSON. Pour demander au serveur NETCONF de renvoyer des informations opérationnelles au format JSON, l’application cliente inclut l’attribut format="json"
dans la balise de demande opérationnelle d’ouverture.
<rpc> <get-interface-information format="json"> <brief/> <interface-name>cbp0</interface-name> </get-interface-information> </rpc> ]]>]]>
Lorsque l’application cliente inclut l’attribut format="json"
dans la balise de requête, le serveur NETCONF met en forme la réponse à l’aide de 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> ]]>]]>
À partir de Junos OS Version 17.3R1, les équipements exécutant Junos OS prennent en charge l’émission de l’état opérationnel de l’équipement au format JSON compact, dans lequel seuls les objets ayant plusieurs valeurs sont émis en tant que matrices JSON. Pour configurer l’unité afin qu’elle émette un format JSON compact, configurez l’instruction compact
au niveau de la [edit system export-format state-data json]
hiérarchie.
Les RPC de commande opérationnelle prennent également en charge le retour de la sortie JSON dans un format minifié, ce qui omet les espaces inutiles, les onglets et les nouvelles lignes. Pour demander la sortie JSON minifiée dans les versions prises en charge, incluez l’attribut format="json-minified"
dans la balise de requête d’ouverture. Par exemple :
<rpc> <get-interface-information format="json-minified"> <brief/> <interface-name>cbp0</interface-name> </get-interface-information> </rpc> ]]>]]>
Le serveur NETCONF renvoie les informations au format JSON minifié.
<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> ]]>]]>
ASCII Format
Pour demander au serveur NETCONF de renvoyer des informations opérationnelles sous forme de texte ASCII au format au lieu de les baliser avec des éléments de balise XML Junos, l’application cliente inclut l’attribut ou format="ascii"
l’attribut format="text"
dans la balise de demande d’ouverture.
<rpc> <get-interface-information format="(text | ascii)"> <brief/> <interface-name>ge-0/3/0</interface-name> </get-interface-information> </rpc> ]]>]]>
Lorsque l’application cliente inclut la format="text"
balise de requête ou format="ascii"
l’attribut, le serveur NETCONF met en forme la réponse sous forme de texte ASCII et l’intègre à un élément de <output>
balise. Les format="text"
données et format="ascii"
les attributs produisent une sortie identique.
<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> ]]>]]>
L’exemple suivant montre la commande du mode opérationnel équivalente exécutée dans l’interface de ligne de commande :
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
Le texte ASCII au format renvoyé par le serveur NETCONF est identique à la sortie CLI, sauf dans les cas où la sortie inclut des caractères désallergés tels que « < » (moins de signe), « > » (supérieur à signe) et « & » (ampersand). Le serveur NETCONF remplace ces caractères par la référence d’entité prédéfinie équivalente de '<', '>' et '&', respectivement.
Si l’API XML Junos ne définit pas d’élément de balise de réponse pour le type de sortie demandé par une application cliente, le serveur NETCONF renvoie la réponse en tant que texte ASCII au format joint dans un <output>
élément de balise, même si une sortie xml est demandée.
Le contenu et la mise en forme des données d’un <output>
élément de balise sont susceptibles d’être modifiés, de sorte que les applications clientes ne doivent pas en dépendre.