NETCONFセッションにおける運用情報リクエストの出力形式を指定する
NETCONF セッションでは、Junos デバイスに関する情報を要求するために、クライアント アプリケーションは Junos XML リクエスト タグ要素を <rpc> 囲む要素を発行します。NETCONF サーバーが特定の形式で出力を返すように要求するには、クライアント アプリケーションには、開く運用要求タグにオプション format 属性が含まれています。アプリケーションは、XML(Extensible Markup Language)タグ付き形式、JSON(JavaScript Object Notation)、またはフォーマットされたASCIIテキストでの出力を要求できます。構文は次のとおりです。
<rpc>
<operational-request format="(ascii | json | json-minified | text | xml | xml-minified)">
<!-- tag elements for options -->
</operational-request>
</rpc>
表 1 は、使用可能なフォーマットを示しています。縮小形式では、スペース、タブ、改行など、コンピューターの処理に必要でない文字が削除されます。ミニ化されたフォーマットはデータのサイズを小さくし、その結果、転送コストとデータ配信および処理時間を削減できます。
format属性値の |
説明 |
|---|---|
ascii |
フォーマットされたASCIIテキスト |
json |
JavaScript Object Notation(JSON) |
json-minified |
不要なスペース、タブ、改行を削除した JSON 形式 |
text |
フォーマットされたASCIIテキスト |
xml |
Junos XML タグ付き形式 |
xml-minified |
不要なスペース、タブ、改行を削除したJunos XMLタグ付きフォーマット |
XML 形式
デフォルトでは、NETCONF サーバーは運用情報を XML 形式で返します。属性が format に xml 設定されている場合、または属性が format 省略された場合、サーバーは XML で応答を返します。以下の例では、ge-0/3/0 インターフェイスの情報を要求し、 属性を format 省略しています。
<rpc>
<get-interface-information>
<brief/>
<interface-name>ge-0/3/0</interface-name>
</get-interface-information>
</rpc>
]]>]]>
NETCONF サーバーは XML 形式で情報を返します。これは、フィルターを操作モード コマンドに追加 | display xml したときに CLI に表示される出力と同じです。
<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>
]]>]]>
運用コマンド RPC は、不要なスペース、タブ、改行を省略して、XML 出力を縮小形式で返す場合もサポートしています。サポートされているリリースでミニ化された XML 出力を要求するには、開始要求タグに format="xml-minified" 属性を含めます。例えば:
<rpc>
<get-interface-information format="xml-minified">
<brief/>
<interface-name>ge-0/3/0</interface-name>
</get-interface-information>
</rpc>
]]>]]>
NETCONF サーバーは、ミニ化された XML 形式で情報を返します。
<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 形式
Junos OS リリース 14.2 以降、運用データと設定データを JSON 形式で表示できるようになりました。NETCONF サーバーに JSON 形式の操作情報を返すように要求するには、クライアント・アプリケーションには、オープン操作要求タグの属性が含まれています format="json" 。
<rpc>
<get-interface-information format="json">
<brief/>
<interface-name>cbp0</interface-name>
</get-interface-information>
</rpc>
]]>]]>
クライアント・アプリケーションが要求タグに属性を format="json" 含む場合、NETCONF サーバーは 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>
]]>]]>
Junos OSリリース17.3R1以降、Junos OSを実行するデバイスは、JSON配列として複数の値を持つオブジェクトのみが出力されるコンパクトなJSON形式でデバイスの運用状態を出力することをサポートしています。コンパクトな JSON 形式を出力するようにデバイスを構成するには、 階層レベルで ステートメントを[edit system export-format state-data json]設定compactします。
運用コマンド RPC は、不要なスペース、タブ、改行を省略して、JSON 出力を縮小形式で返す場合にも対応しています。サポートされているリリースで縮小された JSON 出力を要求するには、開始リクエストタグに format="json-minified" 属性を含めます。例えば:
<rpc>
<get-interface-information format="json-minified">
<brief/>
<interface-name>cbp0</interface-name>
</get-interface-information>
</rpc>
]]>]]>
NETCONF サーバーは、この情報を縮小 JSON 形式で返します。
<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形式
NETCONF サーバーが Junos XML タグ要素でタグ付けする代わりに、運用情報をフォーマットされた ASCII テキストとして返すように要求するには、クライアント アプリケーションに開始要求タグに または format="ascii" 属性が含まれますformat="text"。
<rpc>
<get-interface-information format="(text | ascii)">
<brief/>
<interface-name>ge-0/3/0</interface-name>
</get-interface-information>
</rpc>
]]>]]>
クライアント アプリケーションに要求タグに format="text" または format="ascii" 属性が含まれている場合、NETCONF サーバーは応答を ASCII テキストとしてフォーマットし、タグ要素で<output>囲みます。および format="ascii" 属性はformat="text"、同一の出力を生成します。
<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>
]]>]]>
次の例は、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
NETCONF サーバーから返される書式設定された ASCII テキストは、出力に「<」(小数記号)、>(大きい符号)、&(アンパーサンド)などの許可されていない文字が含まれている場合を除き、CLI 出力と同じです。NETCONF サーバーは、これらの文字をそれぞれ「<」、'>'、および「&」の同等の事前定義されたエンティティ参照で置き換えます。
Junos XML API でクライアント アプリケーションから要求された出力のタイプに対する応答タグ要素が定義されていない場合、NETCONF サーバーは XML タグ付き出力が要求された場合でも、タグ要素で <output> 囲まれたフォーマット済み ASCII テキストとして応答を返します。
タグ要素内 <output> のデータのコンテンツと書式設定は変更される可能性があるため、クライアント アプリケーションはそれらに依存する必要はありません。