X-Git-Url: https://defaria.com/gitweb/?a=blobdiff_plain;f=clearadm%2Fupdatesystem.pl;fp=clearadm%2Fupdatesystem.pl;h=f5fbb060ed18e3bfd636d41ed3d7efcdadddda17;hb=0c802537ec02d6cfea4c41b3138535c09a319489;hp=784303fa92df5e9172b840c97c4f98745501eabf;hpb=bdb1e0c845a6921e22d52fbff3404d5c1dfae520;p=clearscm.git diff --git a/clearadm/updatesystem.pl b/clearadm/updatesystem.pl index 784303f..f5fbb06 100755 --- a/clearadm/updatesystem.pl +++ b/clearadm/updatesystem.pl @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/env perl =pod @@ -73,36 +73,43 @@ my $clearexec = Clearexec->new; my ($delete, $host, $port); -sub GetFilesystems (%) { +sub GetFilesystems(%) { my (%system) = @_; # TODO: Unix/Linux systems often vary as to what parameters df supports. The # -P is to intended to make this POSIX standard. Need to make sure this works # on other systems (i.e. Solaris, HP-UX, Redhat, etc.). - my $cmd = $system{type} eq 'Windows' ? 'df -TP' : 'df -l -TP'; + my $cmd = $system{type} eq 'Windows' + ? 'df -TP' + : $system{type} eq 'Unix' # I think I need to add a Solaris type + ? '/usr/xpg4/bin/df -l -P' + : 'df -l -TP'; my ($status, @output) = $clearexec->execute ($cmd); - error "Unable to execute uname -a - $!", $status . join ("\n". @output) + error "Unable to execute $cmd - $! (Status: $status)\n" . join ("\n". @output), $status if $status; # Real file systems start with "/" - @output = grep { /^\// } @output; + my @fs = grep { /^\// } @output; + + # Also add lines that start with rpool (This is for Solaris zones + push @fs, grep { /^rpool/ } @output; my @filesystems; - foreach (@output) { - if (/^(\S+)\s+(\S+).+?(\S+)$/) { + for (@fs) { + if (/^(\S+)\s+(\S+).+?(\S+)$/) { my %filesystem; $filesystem{system} = $system{name}; - $filesystem{filesystem} = $1; - $filesystem{fstype} = $2; - $filesystem{mount} = $3; + $filesystem{filesystem} = $1; + $filesystem{fstype} = $2; + $filesystem{mount} = $3; push @filesystems, \%filesystem; - } # if - } # foreach + } # if + } # for return @filesystems; } # GetFilesystems @@ -146,7 +153,13 @@ sub GatherSysInfo (;%) { if $status; # TODO: Need to handle this better - $system{type} = $output[0] =~ /cygwin/i ? 'Windows' : $output[0]; + if ($output[0] =~ /sunos/i) { + $system{type} = 'Unix'; + } elsif ($output[0] =~ /cygwin/i) { + $system{type} = 'Windows'; + } else { + $system{type} = 'Linux'; + } # if return %system; } # GatherSysInfo @@ -156,7 +169,7 @@ sub AddFilesystems (%) { my ($err, $msg); - foreach (GetFilesystems %system) { + for (GetFilesystems %system) { my %filesystem = %{$_}; my %oldfilesystem = $clearadm->GetFilesystem ( @@ -186,7 +199,7 @@ sub AddFilesystems (%) { . "$filesystem{system}:$filesystem{filesystem}" if $err; } # if - } # foreach + } # for return ($err, $msg); } # AddFilesystems @@ -284,14 +297,14 @@ if ($delete) { } # if } else { if ($host eq 'all') { - foreach ($clearadm->FindSystem) { + for ($clearadm->FindSystem) { my %system = %$_; ($err, $msg) = UpdateSystem (%system); error "Unable to update host $system{name}\n$msg", $err if $err; - } # foreach + } # for } else { my %system = $clearadm->GetSystem ($host);