Exemplo: solicite um inventário de componentes de hardware usando um aplicativo de cliente NETCONF Perl
A distribuição do NETCONF Perl inclui vários scripts de amostra perl para executar várias funções em dispositivos que executam o Junos OS. O script get_chassis_inventory.pl recupera e exibe um inventário detalhado dos componentes de hardware instalados em uma plataforma de roteamento, comutação ou segurança. É equivalente à emissão do comando de show chassis hardware detail
modo operacional na interface de linha de comando (CLI) do Junos OS. Este tópico descreve a parte do script que executa a consulta.
Antes do Junos OS Release 16.1, cada versão do Junos OS incluía uma nova versão dependente de versão do cliente NETCONF Perl. A partir do Junos OS Release 16.1, o cliente NETCONF Perl é independente de versão, está hospedado no GitHub e CPAN, e pode gerenciar dispositivos que executam qualquer versão do lançamento do Junos OS. Os scripts de amostra nas versões dependentes de versão da distribuição NETCONF Perl diferem daqueles na versão independente de versão hospedada no GitHub e CPAN.
Após estabelecer uma conexão com o servidor NETCONF, o script envia a get_chassis_inventory
solicitação e inclui o detail
argumento.
my $query = "get_chassis_inventory"; my %queryargs = ( 'detail' => 'True' );
Ao usar a distribuição NETCONF Perl dependente da versão, para incluir uma opção de forma fixa ao invocar um método, definir a opção igual ao valor 1 (um).
O script envia a consulta e atribui o valor de devolução à $res
variável. O script primeiro imprime a solicitação de RPC e a resposta à saída padrão e, em seguida, ele imprime a resposta ao arquivo especificado. Em seguida, o script verifica e imprime qualquer erro encontrado.
my $res; # Netconf server response # send the command and get the server response my $res = $jnx->$query(%queryargs); print "Server request: \n $jnx->{'request'}\n Server response: \n $jnx->{'server_response'} \n"; # print the server response into xmlfile print_response($xmlfile, $jnx->{'server_response'}); # See if you got an error if ($jnx->has_error) { croak "ERROR: in processing request \n $jnx->{'request'} \n"; } else { print "Server Response:"; print "$res"; } # Disconnect from the Netconf server $jnx->disconnect();