Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Aulas de kit de ferramentas NETCONF Java

RESUMO  As aulas do NETCONF Java Toolkit são suportadas nas versões 1.0.1 e anteriores.

Classe de kit de ferramentas NETCONF Java: dispositivo

Um net.juniper.netconf.Device objeto representa uma conexão SSHv2 e uma sessão NETCONF padrão entre o servidor de gerenciamento de configuração e o dispositivo no qual reside o servidor NETCONF.

Ao criar um Device objeto, você deve fornecer o endereço IP ou nome de host e os detalhes de autenticação para criar a conexão SSHv2. A autenticação pode ser baseada em senha de usuário ou baseada em chave RSA/DSA. Você também tem a opção de especificar o número de porta para a conexão SSHv2 e os recursos do cliente para enviar ao servidor NETCONF.

A sintaxe do construtor é:

Os parâmetros do construtor são:

  • hostname— (Necessário) endereço IP ou nome de host do dispositivo no qual o servidor NETCONF está em execução e ao qual se conecta via SSHv2.

  • login— (Necessário) Nome de usuário para a conta de login no dispositivo no qual o servidor NETCONF está em execução.

  • password— (Necessária) Senha para autenticação baseada em senha do usuário ou autenticação baseada em chave. Se nenhuma senha for necessária para autenticação baseada em chave, passe esse argumento como nulo.

  • pemKeyFile— (Necessário) Caminho do arquivo contendo a chave privada DSA/RSA no formato PEM para autenticação baseada em chave. Para autenticação baseada em senha do usuário, passe esse argumento como nulo.

  • port— número de porta (opcional) no qual estabelecer a conexão SSHv2. A porta padrão é 830. Se você estiver se conectando a um dispositivo configurado para NETCONF sobre SSH em uma porta diferente da porta padrão, você deve especificar esse número de porta nos argumentos.

  • capabilities— recursos do cliente (opcionais) a serem comunicados ao servidor NETCONF, se os recursos forem diferentes dos recursos padrão.

    Os recursos padrão enviados para o servidor NETCONF são:

A sintaxe geral para criar um Device objeto é:

Por padrão, um NetconfSession objeto é criado quando você cria uma nova instância Device e se conecta a um servidor NETCONF. Depois de criar um Device objeto, você pode realizar operações netconf.

Exemplos

O exemplo a seguir cria um Device objeto com uma conexão SSHv2 autenticada com endereço IP 10.10.1.1. A conexão usa a autenticação baseada em senha do usuário com o nome de login "administrador" e a senha "PaSsWoRd". Quando o connect() método é chamado, ele se conecta ao dispositivo e estabelece automaticamente uma sessão NETCONF padrão.

Para criar um Device objeto com uma conexão NETCONF-over-SSH na porta 49000 em vez da porta padrão 830, adicione o número de porta aos argumentos do construtor.

O valor de tempo limite padrão para se conectar ao dispositivo é de 5000 milissegundos. Para definir o valor do tempo limite em um intervalo diferente, ligue para o setTimeOut() método no objeto do dispositivo.

Classe de kit de ferramentas NETCONF Java: configuração de rede

Um net.juniper.netconf.NetconfSession objeto representa a sessão NETCONF entre o servidor de gerenciamento de configuração e o dispositivo no qual reside o servidor NETCONF.

Por padrão, uma sessão NETCONF é criada quando você cria uma nova instância Device e se conecta a um servidor NETCONF, para que você não precise criar explicitamente um NetconfSession objeto. Você pode realizar as operações netconf diretamente do Device objeto ligando para os métodos associados.

No entanto, pode haver momentos em que você precisa de várias sessões NETCONF na mesma conexão SSHv2. Para criar várias sessões, ligue para o createNetconfSession() método no Device objeto conforme mostrado no exemplo a seguir:

Depois de criar uma sessão NETCONF adicional, você liga para os métodos de operação netconf para o novo NetconfSession objeto da mesma forma que você os chama para o Device objeto.

As Device aulas contêm NetconfSession muitos métodos idênticos, que executam operações de NETCONF, como a execução de chamadas de procedimentos remotos (RPCs) e a execução de alterações de configuração. Quando você liga para um método no Device objeto, ele age na sessão NETCONF padrão. Quando você liga para um método em qualquer objeto adicional NetconfSession , ele age naquela sessão NETCONF.

Exemplo: criação de várias sessões NETCONF

No exemplo a seguir, o trecho de código cria um novo Device objeto. Quando o connect() método é chamado, o programa se conecta ao dispositivo remoto e estabelece uma sessão NETCONF padrão. O programa cria um segundo NetconfSession objeto, second_session. A chamada device.getSessionID() retorna o ID de sessão da sessão NETCONF padrão e a chamada second_session.getSessionID() retorna o ID de sessão da segunda sessão NETCONF.

Classe de kit de ferramentas NETCONF Java: XML

Um net.juniper.netconf.XML objeto representa dados codificados por XML e fornece métodos para modificar e analisar o XML. O objeto XML mantém internamente um org.w3c.dom.Document objeto, correspondente aos dados XML que representa.

Recomenda-se que você trabalhe com o objeto XML para criar novas configurações, chamadas de procedimentos remotos (RPCs) ou quaisquer dados baseados em XML. Usando um objeto XML, você pode adicionar, excluir ou modificar facilmente elementos e atributos. Para facilitar a modificação do conteúdo XML, o objeto XML mantém um elemento "ativo", que representa o nível de hierarquia exposto para modificação.

Para criar um objeto XML, você primeiro cria um XMLBuilder objeto e constrói a hierarquia XML inicial. Os XMLBuilder métodos devolvem um objeto XML no qual você pode então construir. Isso torna conveniente criar configurações e RPCs baseados em XML e também analisar as respostas baseadas em XML recebidas do servidor NETCONF.

Exemplo: criar uma hierarquia de configuração

Este exemplo cria a hierarquia de configuração XML a seguir. As etapas usadas para criar a hierarquia de configuração estão descritas na Tabela 1.

Tabela 1: criação de uma hierarquia de configuração com objetos XMLBuilder e XML

Código Java

Hierarquia resultante

Crie um objeto XMLBuilder e uma hierarquia de 3 níveisXMLBuilder builder = new XMLBuilder();XML policy = builder.createNewConfig("security","policies","policy");

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

Nós de apêndice no nível policy.append("from-zone-name","trust");de 'política' 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> 

Crie um novo nível de hierarquia para a primeira política 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>

Crie a hierarquia XML match = policyOne.append("match"); 'match' // Crie e aplicação de um array de aplicativos // para fazer três nós com o mesmo nome String[] applications =        {"junos-ftp","junos-ntp","junos-ssh"};do nó 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>

Adicione elementos em '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>

Adicione a hierarquia "então" com um elemento de "permissão" para criançaspolicyOne.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>

Código completo e configuração final

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>

Classe de kit de ferramentas NETCONF Java: XMLBuilder

Em uma sessão netconf, a comunicação entre o servidor de gerenciamento de configuração e o servidor NETCONF é por meio de dados codificados por XML. O servidor de gerenciamento de configuração envia chamadas de procedimento remoto (RPCs) para o servidor NETCONF, e o servidor NETCONF processa o RPC e retorna uma resposta de RPC. Os net.juniper.netconf.XMLBuilder objetos e net.juniper.netconf.XML os objetos ajudam a criar e analisar dados codificados por XML.

Você usa o objeto XMLBuilder para criar um novo objeto XML. A sintaxe do construtor é:

A classe XMLBuilder inclui métodos para criar uma hierarquia de configuração, um RPC ou um objeto XML como dados codificados por XML. Cada método é sobrecarregado para aceitar vários níveis de hierarquia. Os métodos devolvem um objeto XML. Por exemplo, os métodos para construir um objeto de configuração, RPC ou XML com uma hierarquia de nível único são:

  • criarNewConfig(String elementLevelOne)

  • criarNewRPC(String elementLevelOne)

  • criarNewXML(String elementLevelOne)

O código de amostra a seguir cria um novo XMLBuilder objeto, builder. O XMLBuilder objeto chama o createNewConfig() método de construir uma hierarquia de configuração de três níveis que consiste em um elemento "segurança", uma tag infantil elemento "políticas" e um elemento "política" que é uma criança de "políticas".

A hierarquia XML resultante é a seguinte.

Observe que o createNewConfig() método sempre envolve a hierarquia dentro de um elemento <configuration>raiz de alto nível. Da mesma forma, o createNewRPC() método inclui a hierarquia dentro de um <rpc> elemento de tag.

Uma vez que você gera um objeto XML, você pode chamar métodos da XML classe para manipular esse objeto.