Add cifsscan.
This commit is contained in:
committed by
Dietmar Maurer
parent
d787523984
commit
4cab0acd27
@ -1116,6 +1116,41 @@ sub scan_nfs {
|
|||||||
return $res;
|
return $res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub scan_cifs {
|
||||||
|
my ($server_in, $user, $password, $domain) = @_;
|
||||||
|
|
||||||
|
my $server;
|
||||||
|
if (!($server = resolv_server ($server_in))) {
|
||||||
|
die "unable to resolve address for server '${server_in}'\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
# we support only Windows grater than 2012 cifsscan so use smb3
|
||||||
|
my $cmd = ['/usr/bin/smbclient', '-m', 'smb3', '-d', '0', '-L', $server];
|
||||||
|
if (defined($user)) {
|
||||||
|
die "password is required" if !defined($password);
|
||||||
|
push @$cmd, '-U', "$user\%$password";
|
||||||
|
push @$cmd, '-W', $domain if defined($domain);
|
||||||
|
} else {
|
||||||
|
push @$cmd, '-N';
|
||||||
|
}
|
||||||
|
|
||||||
|
my $res = {};
|
||||||
|
run_command($cmd,
|
||||||
|
outfunc => sub {
|
||||||
|
my $line = shift;
|
||||||
|
if ($line =~ m/(\S+)\s*Disk\s*(\S*)/) {
|
||||||
|
$res->{$1} = $2;
|
||||||
|
} elsif ($line =~ m/(NT_STATUS_(\S*))/) {
|
||||||
|
$res->{$1} = '';
|
||||||
|
}
|
||||||
|
},
|
||||||
|
errfunc => sub {},
|
||||||
|
noerr => 1
|
||||||
|
);
|
||||||
|
|
||||||
|
return $res;
|
||||||
|
}
|
||||||
|
|
||||||
sub scan_zfs {
|
sub scan_zfs {
|
||||||
|
|
||||||
my $cmd = ['zfs', 'list', '-t', 'filesystem', '-H', '-o', 'name,avail,used'];
|
my $cmd = ['zfs', 'list', '-t', 'filesystem', '-H', '-o', 'name,avail,used'];
|
||||||
|
|||||||
Reference in New Issue
Block a user