因爲雖然這樣做,我傾向於使用:
vfiler run vfilername fsecurity show /path/to/file/here
這將打印的各種ACL屬性(NTFS和Unix)的文件。您需要先列舉您的共享路徑才能執行此操作。 (cifs shares
是一個起點)。
有一種方法可以通過API來完成 - 您需要使用未記錄的'system-cli'功能,該功能可讓您遠程執行命令並捕獲輸出。
不幸的是,這樣做的輸出是......與僅僅運行ssh命令相當。
但是 - 你的手藝XML:
<!DOCTYPE netapp SYSTEM "/na_admin/netapp_filer.dtd">
<netapp version="1.7" xmlns="http://www.netapp.com/filer/admin">
<system-cli>
<args>
<arg>fsecurity</arg>
<arg>show</arg>
<arg>/vol/volname/qtreename/sharename/filename</arg>
</args>
</system-cli>
</netapp>
這將這樣的伎倆,雖然會回報你的純文本cli-output
元素。
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', 'fsecurity');
$args->insert_new_elt('last_child', 'arg', 'show');
$args->insert_new_elt('last_child', 'arg', '/vol/volname/qtree/filename');
$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;