Tendo eliminado este problema, e com agradecimentos a a excelente lista de discussão "torradeiras" (< href="http://network-appliance-toasters.10978.n7.nabble.com/API-calls-to-replicate-a-df-tt26570.html#none"> Arquivo - meu eventual A solução era usar a chamada da API system-cli
.
#!/usr/bin/env perl
use strict;
use warnings;
use XML::Twig;
use LWP;
my $twig = XML::Twig->new( 'pretty_print' => 'indented' );
$twig->set_root(
XML::Twig::Elt->new(
'netapp',
{ version => 1.7,
vfiler => "somevfiler",
xmlns => "http://www.netapp.com/filer/admin",
},
)
);
my $api_req = $twig->root->insert_new_elt('system-cli');
my $args = $api_req->insert_new_elt('args');
$args->insert_new_elt( 'last_child', 'arg', 'df' );
$args->insert_new_elt( 'last_child', 'arg', '-k' );
$twig->set_doctype('netapp SYSTEM "file:/etc/netapp_filer.dtd"');
$twig->set_xml_version("1.0");
$twig->set_encoding('utf-8');
$twig->print;
exit;
my $user_agent = LWP::UserAgent->new(
'ssl_opts' => {
'verify_hostname' => 0,
'SSL_version' => 'SSLv3',
}
);
my $request =
HTTP::Request->new( 'POST' =>
'https://myfilername/servlets/netapp.servlets.admin.XMLrequest_filer'
);
$request->authorization_basic( 'username_here', 'password_here' );
$request->content( $twig->sprint );
my $results = $user_agent->request($request);
if ( not $results->is_success ) {
print "Error: ", $results->status_line;
exit;
}
my $results_xml = XML::Twig->new( 'pretty_print' => 'indented_a' );
$results_xml->parse( $results->content );
$results_xml->print;
Isso funciona para capturar os resultados de um df -k
por meio de uma chamada de API. Mas há apenas uma desvantagem: você só obtém um blob de "comando output" de texto simples, que você precisa analisar de qualquer maneira, para que você não ganhe muito mais do que ssh hostname df -k
- apenas um método diferente de autenticação e busca, mas realmente o que eu estava depois.
Também digno de nota - isso não usa o NetApp SDK. Você pode considerar isso uma vantagem ou não. Pessoalmente acho XML::Twig
e LWP
muito bom trabalhar com - YMMV.
De qualquer forma - outras sugestões incluem:
-
ssh hostname df -k
- use o SNMP para consultá-lo
- para uma chamada de API de dois passos, primeiro para enumerar, segundo para consulta.