Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

NETCONF Java Toolkit 클래스

요약  NETCONF Java Toolkit 클래스는 릴리스 1.0.1 이전 버전에서 지원됩니다.

NETCONF Java Toolkit 클래스: 디바이스

객체는 net.juniper.netconf.Device 구성 관리 서버와 NETCONF 서버가 상주하는 장비 간의 SSHv2 연결 및 기본 NETCONF 세션을 나타냅니다.

객체를 Device 만들 때 SSHv2 연결을 만들려면 IP 주소 또는 호스트 이름 및 인증 세부 정보를 제공해야 합니다. 인증은 사용자 암호 기반이거나 RSA/DSA 키 기반일 수 있습니다. 또한 SSHv2 연결의 포트 번호와 NETCONF 서버로 전송할 클라이언트 기능을 지정할 수도 있습니다.

생성자 구문은 다음과 같습니다.

생성자 매개 변수는 다음과 같습니다.

  • hostname—(필수) NETCONF 서버가 실행 중이며 SSHv2를 통해 연결할 장비의 IP 주소 또는 호스트 이름.

  • login—(필수) NETCONF 서버가 실행 중인 장비의 로그인 계정에 대한 사용자 이름입니다.

  • password—(필수) 사용자 암호 기반 인증 또는 키 기반 인증을 위한 암호. 키 기반 인증을 위해 암호가 필요하지 않은 경우 이 인수를 null로 전달합니다.

  • pemKeyFile—(필수) 키 기반 인증을 위한 PEM 형식의 DSA/RSA 전용 키가 포함된 파일 경로. 사용자 암호 기반 인증의 경우 이 인수를 null로 전달합니다.

  • port—(옵션) SSHv2 연결을 설정하는 포트 번호입니다. 기본 포트는 830입니다. 기본 포트가 아닌 포트에서 NETCONF over SSH에 대해 구성된 디바이스에 연결하는 경우 인수에서 해당 포트 번호를 지정해야 합니다.

  • capabilities—(옵션) 기능이 기본 기능이 아닌 경우, NETCONF 서버와 통신할 수 있는 클라이언트 기능

    NETCONF 서버로 전송되는 기본 기능은 다음과 같습니다.

객체를 만들기 Device 위한 일반적인 구문은 다음과 같습니다.

기본적으로 NetconfSession NETCONF 서버에 연결하고 새 인스턴스 Device 를 생성할 때 객체가 생성됩니다. 객체를 Device 생성한 후에는 NETCONF 작업을 수행할 수 있습니다.

예제

다음 예제에서는 IP 주소 10.10.1.1에 대한 인증된 SSHv2 연결이 있는 객체를 만듭니다 Device . 연결은 로그인 이름 "admin"과 암호 "PaSsWoRd"와 함께 사용자 암호 기반 인증을 사용합니다. connect() 이 메소드를 호출하면 디바이스에 연결하고 기본 NETCONF 세션을 자동으로 설정합니다.

기본 포트 830 대신 포트 49000에서 NETCONF-over-SSH 연결로 객체를 생성 Device 하려면 생성자 인수에 포트 번호를 추가합니다.

디바이스에 연결하기 위한 기본 타임아웃 값은 5000밀리초입니다. 타임아웃 값을 다른 간격으로 설정하려면 디바이스 객체의 setTimeOut() 메소드를 호출합니다.

NETCONF Java Toolkit Class: NetconfSession

객체는 net.juniper.netconf.NetconfSession 구성 관리 서버와 NETCONF 서버가 상주하는 장비 간의 NETCONF 세션을 나타냅니다.

기본적으로 NETCONF 세션은 새로운 인스턴스 Device 를 생성하고 NETCONF 서버에 연결할 때 생성되므로 객체를 NetconfSession 명시적으로 생성할 필요가 없습니다. 연결된 메소드를 호출하여 객체에서 Device 직접 NETCONF 작업을 수행할 수 있습니다.

그러나 동일한 SSHv2 연결에서 여러 NETCONF 세션이 필요할 수도 있습니다. 여러 세션을 생성하려면 다음 예와 같이 객체의 Device 메소드를 호출 createNetconfSession() 합니다.

추가 NETCONF 세션을 생성한 후에는 객체에 대해 이 객체를 호출하는 것과 동일한 방식으로 새로운 NetconfSession 객체에 대한 Device NETCONF 운영 메소드를 호출합니다.

NetconfSession 클래스에는 Device 많은 동일 메소드를 포함하고 있으며, RPC(Remote Procedure Call) 실행 및 구성 변경 수행과 같은 NETCONF 작업을 수행합니다. 객체에서 Device 메서드를 호출하면 기본 NETCONF 세션이 작동합니다. 추가 NetconfSession 객체에 대한 메소드를 호출하면 해당 NETCONF 세션에서 작동합니다.

예: 여러 NETCONF 세션 생성

다음 예에서 코드 조각은 새 Device 객체를 만듭니다. connect() 메소드를 호출하면 프로그램이 원격 디바이스에 연결하고 기본 NETCONF 세션을 설정합니다. 프로그램에서 두 번째 NetconfSession 개체 second_session를 만듭니다. 호출 device.getSessionID() 은 기본 NETCONF 세션의 세션 ID를 반환하고 호출 second_session.getSessionID() 은 두 번째 NETCONF 세션의 세션 ID를 반환합니다.

NETCONF Java Toolkit 클래스: XML

객체는 net.juniper.netconf.XML XML 인코딩된 데이터를 나타내며 XML을 수정하고 구문 분석하는 방법을 제공합니다. XML 객체는 개체가 org.w3c.dom.Document 나타내는 XML 데이터에 따라 객체를 내부적으로 유지합니다.

XML 객체와 함께 작업하여 새로운 구성, RPC(Remote Procedure Call) 또는 XML 기반 데이터를 생성하는 것이 좋습니다. XML 객체를 사용하면 요소와 속성을 쉽게 추가, 삭제 또는 수정할 수 있습니다. XML 컨텐트 수정을 용이하게 하기 위해 XML 객체는 수정을 위해 노출된 계층 수준을 나타내는 '활성' 요소를 유지합니다.

XML 객체를 생성하려면 먼저 객체를 XMLBuilder 생성하고 초기 XML 계층을 구성합니다. 이 XMLBuilder 방법은 빌드할 수 있는 XML 객체를 반환합니다. 이를 통해 편리하게 XML 기반 구성 및 RPC를 생성하고 NETCONF 서버에서 수신한 XML 기반 응답을 구문 분석할 수 있습니다.

예: 구성 계층 생성

이 예에서는 다음 샘플 XML 구성 계층을 만듭니다. 구성 계층을 만드는 데 사용되는 단계는 표 1에 설명되어 있습니다.

표 1: XMLBuilder 및 XML 객체를 통한 구성 계층 생성

Java 코드

결과 계층

XMLBuilder 객체 및 3단계 계층 생성XMLBuilder builder = new XMLBuilder();XML policy = builder.createNewConfig("security","policies","policy");

<configuration>
   <security>
      <policies>
         <policy>
         </policy>
      </policies>
   </security>
</configuration>

'정책' 수준의 policy.append("from-zone-name","trust");부록 노드 policy.append("to-zone-name","untrust");

<configuration>
   <security>
      <policies>
         <policy>
 
            <from-zone-name>trust</from-zone-name>
            <to-zone-name>untrust</to-zone-name>
 
         </policy>
      </policies>
   </security>
</configuration> 

첫 번째 정책에 대한 새로운 계층 수준 생성XML policyOne = policy.append("policy");policyOne.append("name","my-sec-policy");

<configuration>
   <security>
      <policies>
         <policy>
            <from-zone-name>trust</from-zone-name>
            <to-zone-name>untrust</to-zone-name>
 
            <policy>
               <name>my-sec-policy</name>
            </policy>
 
         </policy>
      </policies>
   </security>
</configuration>

'match' 계층 생성XML match = policyOne.append("match");  // 동일한 노드 이름을String[] applications =        {"junos-ftp","junos-ntp","junos-ssh"}; 가진 3개의 노드를 만들기 위해 애플리케이션 어레이를 생성하고 추가합니다. match.append("application", applications);

<configuration>
   <security>
      <policies>
         <policy>
            <from-zone-name>trust</from-zone-name>
            <to-zone-name>untrust</to-zone-name>
            <policy>
               <name>my-sec-policy</name>
 
               <match>
                  <application>junos-ftp</application>
                  <application>junos-ntp</application>
                  <application>junos-ssh</application>
               </match>
 
            </policy>
         </policy>
      </policies>
   </security>
</configuration>

'match'  아래에 요소 추가match.append("source-address","any");match.append("destination-address","any");

<configuration>
   <security>
      <policies>
         <policy>
            <from-zone-name>trust</from-zone-name>
            <to-zone-name>untrust</to-zone-name>
            <policy>
               <name>my-sec-policy</name>
               <match>
                  <application>junos-ftp</application>
                  <application>junos-ntp</application>
                  <application>junos-ssh</application>
 
                  <source-address>any</source-address>
                  <destination-address>
                     any
                  </destination-address>
 
               </match>
            </policy>
         </policy>
      </policies>
   </security>
</configuration>

하위 'permit' 요소 와 함께 'then' 계층을 추가합니다.policyOne.append("then").append("permit");

<configuration>
   <security>
      <policies>
         <policy>
            <from-zone-name>trust</from-zone-name>
            <to-zone-name>untrust</to-zone-name>
            <policy>
               <name>my-sec-policy</name>
               <match>
                  <application>junos-ftp</application>
                  <application>junos-ntp</application>
                  <application>junos-ssh</application>
                  <source-address>any</source-address>
                  <destination-address>
                     any
                  </destination-address>
               </match>
 
               <then>
                  <permit/>
               </then>
 
            </policy>
         </policy>
      </policies>
   </security>
</configuration>

전체 코드 및 최종 구성

XMLBuilder builder = new XMLBuilder();
XML policy = builder.createNewConfig("security","policies","policy");
policy.append("from-zone-name","trust");
policy.append("to-zone-name","untrust");
XML policyOne = policy.append("policy");
policyOne.append("name","my-sec-policy");
XML match = policyOne.append("match");
String[] applications = {"junos-ftp","junos-ntp","junos-ssh"};
match.append("application", applications);
match.append("source-address","any");
match.append("destination-address","any");
policyOne.append("then").append("permit");
<configuration>
   <security>
      <policies>
         <policy>
            <from-zone-name>trust</from-zone-name>
            <to-zone-name>untrust</to-zone-name>
            <policy>
               <name>my-sec-policy</name>
               <match>
                  <application>junos-ftp</application>
                  <application>junos-ntp</application>
                  <application>junos-ssh</application>
                  <source-address>any</source-address>
                  <destination-address>any
                  </destination-address>
               </match>
               <then>
                  <permit/>
               </then>
            </policy>
         </policy>
      </policies>
   </security>
</configuration>

NETCONF Java Toolkit Class: XMLBuilder

NETCONF 세션에서는 구성 관리 서버와 NETCONF 서버 간의 통신은 XML 인코딩된 데이터를 통해 수행됩니다. 구성 관리 서버는 NETCONF 서버로 원격 절차 호출(RPC)을 보내고, NETCONF 서버는 RPC를 처리하고 RPC 회신을 반환합니다. 및 net.juniper.netconf.XML 객체는 net.juniper.netconf.XMLBuilder XML 인코딩된 데이터를 생성하고 구문 분석하는 데 도움이 됩니다.

XMLBuilder 객체를 사용하여 새 XML 객체를 만듭니다. 생성자 구문은 다음과 같습니다.

XMLBuilder 클래스에는 구성 계층, RPC 또는 XML 개체를 XML 인코딩된 데이터로 만드는 방법이 포함됩니다. 각 메소드는 여러 계층 레벨을 수용하도록 오버로드됩니다. 이 방법은 XML 객체를 반환합니다. 예를 들어 단일 계층 구조로 구성, RPC 또는 XML 객체를 구성하는 방법은 다음과 같습니다.

  • createNewConfig(문자열 elementLevelOne)

  • createNewRPC(String elementLevelOne)

  • createNewXML(String elementLevelOne)

다음 샘플 코드는 새 XMLBuilder 개체 builder를 만듭니다. 객체는 XMLBuilder "보안" 요소, "정책" 요소 하위 태그 및 "정책"의 하위 요소인 "정책" 요소로 구성된 3계층 구성 계층을 구축하기 위한 방법을 호출 createNewConfig() 합니다.

결과 XML 계층은 다음과 같습니다.

createNewConfig() 방법은 항상 최상위 루트 요소 내에 계층을 동봉한다는 것을 유의하십시오 <configuration>. 마찬가지로 이 createNewRPC() 방법은 태그 요소 내에 <rpc> 계층을 동봉합니다.

XML 객체를 생성한 후에는 클래스에서 메소드를 호출하여 해당 객체를 XML 조작할 수 있습니다.