2015-07-03 57 views
0

有誰知道如何使用C#在NETAPP vfiler中的所有共享上列出NTFS權限?如何在NETAPP上獲得NTFS

我試圖使用NETAPP API,但只獲得共享權限,無法找到獲取NTFS的方法。

編輯

感謝Sobrique,這裏的C#語法:

 var api = new NaElement("system-cli"); 
     var args = new NaElement("args"); 
     args.AddNewChild("arg", "fsecurity"); 
     args.AddNewChild("arg", "show"); 
     args.AddNewChild("arg", path); 
     api.AddChildElement(args); 
     s.InvokeElem(api) 

回答

1

因爲雖然這樣做,我傾向於使用:

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;