X-Git-Url: https://defaria.com/gitweb/?a=blobdiff_plain;f=clearadm%2Fupdatesystem.pl;h=1073a857f1e2c7e7060548d0d7e349366c990d40;hb=HEAD;hp=9a27a69e5c09fc5b7fac5ec8aff3a0c34b7f281f;hpb=020a4a5ea2be725b155cae3a2cadc9aba3911b9b;p=clearscm.git diff --git a/clearadm/updatesystem.pl b/clearadm/updatesystem.pl index 9a27a69..1073a85 100755 --- a/clearadm/updatesystem.pl +++ b/clearadm/updatesystem.pl @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/env perl =pod @@ -73,53 +73,58 @@ 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); + my ($status, @output) = $clearexec->execute($cmd); - error "Unable to execute uname -a - $!", $status . join ("\n". @output) - if $status; + 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 -sub GatherSysInfo (;%) { +sub GatherSysInfo(;%) { my (%system) = @_; # Set name if not currently set - $system{name} = $host - unless $system{name}; + $system{name} = $host unless $system{name}; my ($status, @output); $system{port} ||= $port; # Connect to clearexec server - $status = $clearexec->connectToServer ($system{name}, $system{port}); + $status = $clearexec->connectToServer($system{name}, $system{port}); unless ($status) { warning "Unable to connect to $system{name}:$port"; @@ -129,10 +134,9 @@ sub GatherSysInfo (;%) { # Get OS info my $cmd = 'uname -a'; - ($status, @output) = $clearexec->execute ($cmd); + ($status, @output) = $clearexec->execute($cmd); - error "Unable to execute '$cmd' - $!", $status . join ("\n". @output) - if $status; + error "Unable to execute '$cmd' - $!", $status . join("\n". @output) if $status; $system{os} = $output[0]; @@ -140,26 +144,31 @@ sub GatherSysInfo (;%) { $cmd = 'uname -s'; - ($status, @output) = $clearexec->execute ($cmd); + ($status, @output) = $clearexec->execute($cmd); - error "Unable to execute '$cmd' - $!", $status . join ("\n". @output) - if $status; + error "Unable to execute '$cmd' - $!", $status . join("\n". @output) 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 -sub AddFilesystems (%) { +sub AddFilesystems(%) { my (%system) = @_; my ($err, $msg); - foreach (GetFilesystems %system) { + for (GetFilesystems %system) { my %filesystem = %{$_}; - my %oldfilesystem = $clearadm->GetFilesystem ( + my %oldfilesystem = $clearadm->GetFilesystem( $filesystem{system}, $filesystem{filesystem} ); @@ -167,31 +176,29 @@ sub AddFilesystems (%) { if (%oldfilesystem) { verbose "Updating filesystem $filesystem{system}:$filesystem{filesystem}"; - ($err, $msg) = $clearadm->UpdateFilesystem ( + ($err, $msg) = $clearadm->UpdateFilesystem( $filesystem{system}, $filesystem{filesystem}, %filesystem, ); error 'Unable to update filesystem ' - . "$filesystem{system}:$filesystem{filesystem}" - if $err; + . "$filesystem{system}:$filesystem{filesystem}" if $err; } else { verbose 'Adding filesystem ' . "$filesystem{system}:$filesystem{filesystem}"; - ($err, $msg) = $clearadm->AddFilesystem (%filesystem); + ($err, $msg) = $clearadm->AddFilesystem(%filesystem); error 'Unable to add filesystem ' - . "$filesystem{system}:$filesystem{filesystem}" - if $err; - } # if - } # foreach + . "$filesystem{system}:$filesystem{filesystem}" if $err; + } # if + } # for return ($err, $msg); } # AddFilesystems -sub AddSystem ($) { +sub AddSystem($) { my ($system) = @_; verbose "Adding newhost $system"; @@ -201,10 +208,9 @@ sub AddSystem ($) { # If GatherSysInfo was able to connect to clearagent it will set this field my $clearagent = delete $system{clearagent}; - my ($err, $msg) = $clearadm->AddSystem (%system); + my ($err, $msg) = $clearadm->AddSystem(%system); - return ($err, $msg) - if $err; + return ($err, $msg) if $err; if ($clearagent) { return AddFilesystems %system; @@ -213,12 +219,12 @@ sub AddSystem ($) { } # if } # AddSystem -sub UpdateSystem (%) { +sub UpdateSystem(%) { my (%system) = @_; my ($err, $msg); - %system = GatherSysInfo (%system); + %system = GatherSysInfo(%system); # If GatherSysInfo was able to connect to clearagent it will set this field my $clearagent = delete $system{clearagent}; @@ -227,7 +233,7 @@ sub UpdateSystem (%) { verbose "Updating existing host $system{name}"; - ($err, $msg) = $clearadm->UpdateSystem ($system{name}, %system); + ($err, $msg) = $clearadm->UpdateSystem($system{name}, %system); return ($err, $msg) if $err; @@ -242,7 +248,7 @@ sub UpdateSystem (%) { $host = hostname; $port = $Clearexec::CLEAROPTS{CLEAREXEC_PORT}; -GetOptions ( +GetOptions( 'usage' => sub { Usage }, 'verbose' => sub { set_verbose }, 'debug' => sub { set_debug }, @@ -251,12 +257,10 @@ GetOptions ( 'port=s' => \$port, ) or Usage "Invalid parameter"; -Usage 'Extraneous options: ' . join ' ', @ARGV - if @ARGV; +Usage 'Extraneous options: ' . join ' ', @ARGV if @ARGV; if ($delete) { - error "Must specify -host if you specify -delete", 1 - unless $host; + error "Must specify -host if you specify -delete", 1 unless $host; } # if # Announce ourselves @@ -270,7 +274,7 @@ if ($delete) { my $answer = ; if ($answer =~ /(y|yes)/i) { - ($err, $msg) = $clearadm->DeleteSystem ($host); + ($err, $msg) = $clearadm->DeleteSystem($host); if ($err == 0) { error "No host named $host in database"; @@ -284,21 +288,20 @@ if ($delete) { } # if } else { if ($host eq 'all') { - foreach ($clearadm->FindSystem) { + for ($clearadm->FindSystem) { my %system = %$_; - ($err, $msg) = UpdateSystem (%system); + ($err, $msg) = UpdateSystem(%system); - error "Unable to update host $system{name}\n$msg", $err - if $err; - } # foreach + error "Unable to update host $system{name}\n$msg", $err if $err; + } # for } else { - my %system = $clearadm->GetSystem ($host); + my %system = $clearadm->GetSystem($host); if (%system) { - ($err, $msg) = UpdateSystem (%system); + ($err, $msg) = UpdateSystem(%system); } else { - ($err, $msg) = AddSystem ($host); + ($err, $msg) = AddSystem($host); } # if if ($err) { @@ -345,10 +348,10 @@ L =begin html
-Clearadm
-Clearexec
-Display
-Utils
+Clearadm
+Clearexec
+Display
+Utils
=end html