Solucionar erros de exceção em um aplicativo JAVA NETCONF
As seções a seguir descrevem erros de exceção que você pode encontrar ao executar um programa de kit de ferramentas NETCONF Java. Essas seções também apresentam possíveis causas e soluções para cada erro.
Erros de conexão de resolução de problemas: soquete cronometrado
Problema
Descrição
Ocorre uma exceção do NETCONF e você vê a seguinte mensagem de erro:
Exception in thread "main" net.juniper.netconf.NetconfException: The connect() operation on the socket timed out. at net.juniper.netconf.Device.createNetconfSession(Device.java:344) at net.juniper.netconf.Device.connect(Device.java:225) at GetChassisInventory.main(GetChassisInventory.java:14)
Causa
As causas potenciais para o erro no tempo de saída do soquete incluem:
O dispositivo ou interface ao qual você está se conectando está indisponível ou indisponível.
O endereço IP ou nome de host nos argumentos do
Device
objeto está incorreto.O valor do tempo limite de conexão foi excedido antes da conexão ser estabelecida.
Solução
Garanta que o dispositivo esteja funcionando. Verifique também se o endereço IP ou nome de host está correto nos argumentos do Device
construtor em seu código de programa.
O valor de tempo limite padrão para se conectar a um dispositivo é de 5000 milissegundos. Para definir o valor do tempo limite em um intervalo maior para garantir que o programa tenha tempo suficiente para estabelecer a conexão, ligue para o setTimeOut()
método no objeto do dispositivo. O código a seguir define o intervalo de tempo limite para 10 segundos:
Device device = new Device("10.10.1.1","admin","PaSsWoRd",null); device.setTimeOut(10000); device.connect();
Erros de conexão de resolução de problemas: sem conexão
Problema
Descrição
Ocorre uma exceção ao IllegalStateException e você vê a seguinte mensagem de erro:
Exception in thread "main" java.lang.IllegalStateException: Cannot execute RPC, you need to establish a connection first. at net.juniper.netconf.Device.executeRPC(Device.java:498) at GetChassisInventoryRun.main(GetChassisInventoryRun.java:15)
Causa
Uma sessão de conexão SSHv2 ou NETCONF não foi estabelecida com o dispositivo remoto.
Solução
Ligue para o connect()
método no objeto do dispositivo para estabelecer uma conexão SSHv2 e uma sessão NETCONF padrão com o dispositivo no qual o servidor NETCONF é executado. Assim que a conexão e a sessão forem estabelecidas, a execução do RPC deve ser bem sucedida.
Erros de autenticação de solução de problemas
Problema
Descrição
Ocorre uma exceção do NETCONF e você vê a seguinte mensagem de erro:
Exception in thread "main" net.juniper.netconf.NetconfException: Authentication failed. at net.juniper.netconf.Device.createNetconfSession(Device.java:358) at net.juniper.netconf.Device.connect(Device.java:225) at GetChassisInventory.main(GetChassisInventory.java:14) <!-- or --> Could not connect to device:Authentication failed.
Causa
Uma mensagem de erro para autenticação com falha pode ter várias causas possíveis, incluindo a seguinte:
Os detalhes de host ou autenticação passados conforme os
Device
argumentos ao construtor são inseridos incorretamente no código do programa.Os argumentos para o
Device
objeto estão corretos, mas não há uma conta de usuário correspondente criada no dispositivo ao qual você está se conectando.
Solução
Se não houver nenhuma conta do usuário no dispositivo ao qual você está se conectando, crie a conta com a autenticação apropriada. Para obter mais informações sobre a configuração de contas de usuário em um dispositivo que executa o Junos OS, consulte o Guia do usuário de acesso e autenticação do Junos OS para dispositivos de roteamento .
Se a conta do usuário existir no dispositivo remoto, mas os argumentos para o Device
construtor forem inseridos incorretamente no código do programa, corrija os argumentos e recompile o programa.
Resolução de problemas de erros de sessão do NETCONF
Problema
Descrição
Ocorre uma exceção do NETCONF e você vê a seguinte mensagem de erro:
Exception in thread "main" net.juniper.netconf.NetconfException: There was a problem while connecting to 10.10.1.1:830 at net.juniper.netconf.Device.createNetconfSession(Device.java:344) at net.juniper.netconf.Device.connect(Device.java:225) at GetChassisInventory.main(GetChassisInventory.java:14)
Causa
O NETCONF sobre SSH pode não ser habilitado no dispositivo onde o servidor NETCONF reside, ou pode ser habilitado em uma porta diferente.
Solução
Garanta que você habilitou o NETCONF sobre SSH no dispositivo onde reside o servidor NETCONF. Se o seu programa de kit de ferramentas NETCONF Java não especificar um número de porta específico nos Device
argurments, a sessão NETCONF estará estabelecida na porta NETCONF-over-SSH padrão, 830. Para verificar se o NETCONF sobre SSH está habilitado na porta padrão para um dispositivo que executa o Junos OS, insira o seguinte comando de modo operacional no dispositivo remoto:
user@host> show configuration system services ftp; netconf { ssh; }
Se a hierarquia de netconf
configuração estiver ausente, emita as seguintes declarações no modo de configuração para habilitar o NETCONF sobre SSH na porta padrão:
[edit] user@host# set system services netconf ssh user@host# commit
Se a netconf
hierarquia de configuração especificar uma porta diferente da porta padrão, você deve incluir o novo número de porta nos argumentos do Device
construtor de objetos. Por exemplo, o seguinte dispositivo está configurado para NETCONF sobre SSH na porta 12345:
user@host> show configuration system services netconf { ssh { port 12345; } }
Para corrigir o problema da conexão, inclua o novo número de porta nos Device
argumentos.
Device device = new Device("10.10.1.1", "admin", "PaSsWoRd", null, 12345);