Junos XML 프로토콜 세션에서 운영 정보 요청에 대한 출력 형식 지정
Junos XML 프로토콜 세션에서 Junos OS를 실행하는 라우팅, 스위칭 또는 보안 플랫폼에 대한 정보를 요청하기 위해 클라이언트 애플리케이션은 태그 요소에 <rpc>
Junos XML 요청 태그 요소를 동봉합니다. 클라이언트 애플리케이션은 오프닝 운영 요청 태그에서 옵션 format
속성을 설정함으로써 Junos XML 프로토콜 서버가 반환하는 출력의 형식을 지정할 수 있습니다. 정보는 XML 태그 형식, JSON(JavaScript Object Notation) 또는 형식화된 ASCII 텍스트로 반환할 수 있습니다. 기본 구문은 다음과 같습니다.
<rpc> <operational-request format="(ascii | json | text | xml)"> <!-- tag elements for options --> </operational-request> </rpc>
XML 형식
기본적으로 Junos XML 프로토콜 서버는 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>
Junos XML 프로토콜 서버는 XML 태그 형식으로 정보를 반환합니다. 이 형식은 작업 모드 명령 이후 옵션을 포함 | display xml
할 때 CLI에 표시되는 출력과 동일합니다.
<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>
ASCII 형식
Junos XML 프로토콜 서버가 Junos XML 태그 요소에 태그를 지정하는 대신 형식의 ASCII 텍스트로 운영 정보를 반환하도록 요청하려면 클라이언트 애플리케이션은 오프닝 요청 태그에 해당 또는 format="ascii"
속성을 포함합니다format="text"
. 클라이언트 애플리케이션은 해당 요청을 태그 요소에 <rpc>
동봉합니다.
<rpc> <get-interface-information format="(text | ascii)"> <brief/> <interface-name>ge-0/3/0</interface-name> </get-interface-information> </rpc>
클라이언트 애플리케이션이 요청 태그에 속성 또는 format="ascii"
기능을 포함 format="text"
하면 Junos XML 프로토콜 서버는 응답 형식을 ASCII 텍스트로 지정하고 이를 태그 요소에 <output>
동봉합니다. 및 format="ascii"
속성은 format="text"
동일한 출력을 생성합니다.
<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>
다음 예제에서는 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
Junos XML 프로토콜 서버가 반환한 형식의 ASCII 텍스트는 '<'(기호보다 적음), '>'(기호보다 큰) 및 '&'(ampersand)와 같은 허용되지 않는 문자를 출력하는 경우를 제외하고 CLI 출력과 동일합니다. Junos XML 프로토콜 서버는 이러한 문자를 각각 '<', '>', '&'의 동급 사전 정의된 엔티티 참조로 대체합니다.
Junos XML API가 클라이언트 애플리케이션에서 요청하는 출력 유형에 대한 응답 태그 요소를 정의하지 않는 경우, JUNOS XML 프로토콜 서버는 XML 태깅된 출력을 요청하더라도 태그 요소에 <output>
동봉된 형식의 ASCII 텍스트로 회신을 반환합니다.
태그 요소에 <output>
대한 자세한 내용은 Junos XML API 운영 개발자 참조를 참조하십시오.
태그 요소 내 <output>
의 데이터의 컨텐트와 형식은 변경될 수 있으므로 클라이언트 애플리케이션은 데이터에 의존해서는 안 됩니다.
JSON 형식
Junos OS Release 14.2부터 클라이언트 애플리케이션은 JSON 형식으로 운영 및 구성 정보를 요청할 수 있습니다. Junos XML 프로토콜 서버가 Junos XML 태그 요소에 태그를 지정하는 대신 JSON 형식을 사용하여 운영 정보를 반환하도록 요청하려면 클라이언트 애플리케이션은 오프닝 요청 태그에 속성을 포함합니다 format="json"
. 클라이언트 애플리케이션은 해당 요청을 태그 요소에 <rpc>
동봉합니다.
<rpc> <get-interface-information format="json"> <brief/> <interface-name>cbp0</interface-name> </get-interface-information> </rpc> ]]>]]>
클라이언트 애플리케이션이 요청 태그에 format="json"
속성을 포함하면 Junos XML 프로토콜 서버가 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>
Junos OS 릴리스 17.3R1부터 Junos OS를 실행하는 디바이스는 여러 값이 있는 객체만 JSON 어레이로 방출되는 컴팩트한 JSON 형식으로 디바이스의 작동 상태를 내보입니다. 컴팩트한 JSON 형식을 내보내도록 디바이스를 구성하려면 계층 수준에서 명령문을 [edit system export-format state-data json]
구성 compact
하십시오.
user@host# set system export-format state-data json compact
다음 예제에서는 명령을 실행하고 show system uptime
출력을 컴팩트하지 않은 소형 JSON 형식으로 표시합니다.
user@host> show system uptime | display json
컴팩트하지 않은 JSON 형식:
{ "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" } ] } ] } ] }
동일한 명령어에 대한 컴팩트한 JSON 형식은 다음과 같습니다.
{ "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" } } }