Index: bb-ESXi.pl =================================================================== --- bb-ESXi.pl (revision 1) +++ bb-ESXi.pl (working copy) @@ -19,6 +19,8 @@ # along with this program. If not, see . # +use strict; +use warnings; use Getopt::Long; use HTML::Entities; use Date::Manip; @@ -36,34 +38,47 @@ my $today = `date`; chomp $today; -my $BB = "/usr/local/xymon/client/bin/bb"; +my $BB = "$ENV{BBHOME}/bin/bb"; my $HOST = "localhost"; +open PF,"$ENV{BBHOME}/.esxpass" + or die "Couldn't open $ENV{BBHOME}/.esxpass"; +my $pass = ; +chomp $pass; +close PF; my %opts = (host => undef, userid => "root", - password => "Passw0rd"); + password => $pass); my $sendit = "Yes"; GetOptions (\%opts, "host=s"); -@VERSION = `$vcli/apps/host/hostinfo.pl --server $opts{host} --username $opts{userid} --password $opts{password}`; +my @VERSION = `$vcli/apps/host/hostinfo.pl --server $opts{host} --username $opts{userid} --password $opts{password}`; +my $version; +my $boottime; for ( @VERSION ) { - if (/Software/) { @version = split(":", $_); } - $version = @version[1]; + print "DBGV: $_" if $debug; + if (/Software/) { my @version = split(":", $_); + $version = $version[1]; $version =~ s/^\s+//; - chomp($version); - if (/BootTime/) { @boot = split(":", $_); } - $boot = @boot[1].":".@boot[2].":".@boot[3]; + chomp($version); } + if (/BootTime/) { my @boot = split(":", $_); + my $boot = $boot[1].":".$boot[2].":".$boot[3]; $boot =~ s/^\s+//; $boot =~ s/T/ /; $boot =~ s/Z//; chomp($boot); - ($boottime,$crap) = split("\\.", $boot); + ($boottime,undef) = split("\\.", $boot); } } +my ($logheader,$logfileheader,$logtail); +my @logmessage; +my @DF; +my @PORTARRAY; +my @PROCARRAY; if ( $version =~ /ESXi 4/ ) { for ( @esxi4logs ) { `$vcli/apps/general/fileaccess.pl --server $opts{host} --username $opts{userid} --password $opts{password} --localpath /tmp/$opts{host}-$_ --remotefilename $_ --filetype config --operation get`; @@ -102,7 +117,7 @@ `rm -Rf /tmp/$opts{host}-$_`; } -@PORTS = `$vcli/bin/esxcli/esxcli --server $opts{host} --username=$opts{userid} --password=$opts{password} network ip connection list`; +my @PORTS = `$vcli/bin/esxcli/esxcli --server $opts{host} --username=$opts{userid} --password=$opts{password} network ip connection list`; for ( @PORTS ) { if ($_ =~ /^udp/) { } else { push(@PORTARRAY, $_); } @@ -110,7 +125,7 @@ unshift(@PORTARRAY, "Active Internet connections (servers and established)\n"); unshift(@PORTARRAY, "[ports]\n"); -@PROCS = `$vcli/bin/esxcli/esxcli --server $opts{host} --username=$opts{userid} --password=$opts{password} system process list`; +my @PROCS = `$vcli/bin/esxcli/esxcli --server $opts{host} --username=$opts{userid} --password=$opts{password} system process list`; shift(@PROCS); shift(@PROCS); for ( @PROCS ) { @@ -124,13 +139,15 @@ unshift(@PROCARRAY, "Id\tCartel Id\tName\tSecurity Domain\tCMD\n"); unshift(@PROCARRAY, "[ps]\n"); -@FILESYSTEMS = `$vcli/bin/esxcli/esxcli --server $opts{host} --username=$opts{userid} --password=$opts{password} storage filesystem list`; +my @FILESYSTEMS = `$vcli/bin/esxcli/esxcli --server $opts{host} --username=$opts{userid} --password=$opts{password} storage filesystem list`; shift(@FILESYSTEMS); shift(@FILESYSTEMS); +my $i; for ( @FILESYSTEMS ) { $i++; use bytes; -($mountpoint, $volume, $uuid, $mounted, $fstype, $fssize, $fsfree, $fsmaybe) = split(" ", $_); +my($mountpoint, $volume, $uuid, $mounted, $fstype, $fssize, $fsfree, $fsmaybe) = split(" ", $_); +my($capacity,$caphuman,$fssizek,$fsfreek,$used); if ($fsmaybe) { $capacity = 100 - ($fsmaybe / $fsfree) * 100; $caphuman = sprintf("%.0f", $capacity); @@ -161,38 +178,39 @@ while (length($used) < 10) { $used =~ s/^/ /; } while (length($fstype) < 15) { $fstype .= " "; } while (length($caphuman) < 5) { $caphuman =~ s/^/ /; } -$DFSTRING = "$fstype$fssizek$used$fsfreek $caphuman% /vmfs/volumes/$volume\n"; +my $DFSTRING = "$fstype$fssizek$used$fsfreek $caphuman% /vmfs/volumes/$volume\n"; push(@DF, $DFSTRING); } unshift(@DF, "Filesystem 1024-blocks Used Available Capacity Mounted on\n"); unshift(@DF, "[df]\n"); } -@ESXTOP = `echo "$opts{password}"|/usr/bin/resxtop --server $opts{host} --username $opts{userid} -n 1 -d 2 -a -b`; +my @ESXTOP = `echo "$opts{password}"|/usr/bin/resxtop --server $opts{host} --username $opts{userid} -n 1 -d 2 -a -b 2>/dev/null`; -@HEADERS = split("\,", @ESXTOP[0]); -@VALUES = split("\,", @ESXTOP[1]); +my @HEADERS = split("\,", $ESXTOP[0]); +my @VALUES = split("\,", $ESXTOP[1]); -@VALUES[0] =~ s/\"//g; +$VALUES[0] =~ s/\"//g; -($ESXDATE,$ESXCLOCK) = split(" ", @VALUES[0]); +my ($ESXDATE,$ESXCLOCK) = split(" ", $VALUES[0]); -$ESXBOOT = UnixDate($boottime,'%s'); -$ESXTIME = UnixDate(@VALUES[0],'%s'); -$NOWTIME = UnixDate($today,'%s'); -$TIMEDIFF = $ESXTIME - $NOWTIME; +my $ESXBOOT = UnixDate($boottime,'%s'); +my $ESXTIME = UnixDate($VALUES[0],'%s'); +my $NOWTIME = UnixDate($today,'%s'); +my $TIMEDIFF = $ESXTIME - $NOWTIME; -$UPSECS = $ESXTIME - $ESXBOOT; +my $UPSECS = $ESXTIME - $ESXBOOT; -$FIRST = $UPSECS / 86400; -($UPDAYS,$SECOND) = split("\\.",$FIRST); -$THIRD = ($FIRST - $UPDAYS) * 86400; -$FOURTH = $THIRD / 3600; -($UPHOURS, $FIFTH) = split("\\.",$FOURTH); -$SIXTH = ($FOURTH - $UPHOURS) * 3600; -$SEVENTH = $SIXTH / 60; -($UPMINS, $EIGTH) = split("\\.", $SEVENTH); -$UPSECONDS = sprintf("%.0f", ($SEVENTH - $UPMINS) * 60); +my $FIRST = $UPSECS / 86400; +my ($UPDAYS,$SECOND) = split("\\.",$FIRST); +my $THIRD = ($FIRST - $UPDAYS) * 86400; +my $FOURTH = $THIRD / 3600; +my ($UPHOURS, $FIFTH) = split("\\.",$FOURTH); +my $SIXTH = ($FOURTH - $UPHOURS) * 3600; +my $SEVENTH = $SIXTH / 60; +my ($UPMINS, $EIGTH) = split("\\.", $SEVENTH); +my $UPSECONDS = sprintf("%.0f", ($SEVENTH - $UPMINS) * 60); +my $UPTIME; if ($UPDAYS eq '0') { if ($UPHOURS eq '0') { @@ -205,16 +223,19 @@ } else { $UPTIME = $UPDAYS." day(s)"; } -$ELEMENTS = scalar(@HEADERS); +my $ELEMENTS = scalar(@HEADERS); if ($dump eq "yes") {open FILE, ">$opts{host}.out";} -for ($i=0;$i<$ELEMENTS;$i++) { +my ($overcommit1,$overcommit5,$overcommit15,$totalmemory,$kernelmemory,$nonkernelmemory,$freememory,$swapused); +my $hostactualmemory = 0; +my ($cpuload1min,$cpuload5min,$cpuload15min,$cpuproctime,$cpuutiltime,$cpucoretime,$proccount); +for (my $i=0;$i<$ELEMENTS;$i++) { -$LINE = "@HEADERS[$i]\\@VALUES[$i]"; +my $LINE = "$HEADERS[$i]\\$VALUES[$i]"; $LINE =~ s/\"//g; $LINE =~ s/\\\\//g; -($host, $subsystem, $item, $value) = split(/\\/, $LINE); +my ($host, $subsystem, $item, $value) = split(/\\/, $LINE); if ($dump eq "yes") {print FILE $LINE."\n";} @@ -250,15 +271,18 @@ } } -$usedtotal = $totalmemory - $freememory; +my $usedtotal = $totalmemory - $freememory; +my $usedtotalpct; if ($totalmemory > 0) { $usedtotalpct = 100 - ($freememory / $totalmemory) * 100;} $usedtotalpct = sprintf("%.0f", $usedtotalpct); -$freekernel = $kernelmemory - $hostactualmemory; +my $freekernel = $kernelmemory - $hostactualmemory; +my $kernelpct; if ($kernelmemory > 0) {$kernelpct = 100 - ($freekernel / $kernelmemory) * 100;} $kernelpct = sprintf("%.0f", $kernelpct); -$swapmax = $kernelmemory * 2; +my $swapmax = $kernelmemory * 2; +my $swappct; if ($swapmax > 0) {$swappct = ($swapused / $swapmax) * 100;} $swappct = sprintf("%.0f", $swappct); @@ -267,28 +291,28 @@ $hostactualmemory = sprintf("%.0f", $hostactualmemory); $swapused = sprintf("%.0f", $swapused); -$totalmemoryk = $totalmemory * 1024; -$usedtotalk = $usedtotal * 1024; -$freememoryk = $freememory * 1024; -$swapmaxk = $swapmax * 1024; -$swapusedk = $swapused * 1024; -$swapfreek = $swapmaxk - $swapusedk; -$kernelmemk = $kernelmemory * 1024; -$freekernelk = $freekernel * 1024; -$hostactualmemoryk = $hostactualmemory * 1024; +my $totalmemoryk = $totalmemory * 1024; +my $usedtotalk = $usedtotal * 1024; +my $freememoryk = $freememory * 1024; +my $swapmaxk = $swapmax * 1024; +my $swapusedk = $swapused * 1024; +my $swapfreek = $swapmaxk - $swapusedk; +my $kernelmemk = $kernelmemory * 1024; +my $freekernelk = $freekernel * 1024; +my $hostactualmemoryk = $hostactualmemory * 1024; -$cpuidle = 100 - ($cpuproctime + $cpuutiltime); +my $cpuidle = 100 - ($cpuproctime + $cpuutiltime); -$esxlocal = UnixDate(@VALUES[0],"%Y-%m-%d %T %Z"); -$utctime = UnixDate(@VALUES[0],"%Y-%m-%d %T %Z"); -$epochtime = UnixDate(@VALUES[0],'%s'); -$datesec = UnixDate(@VALUES[0], "%a %b %T %Z %Y"); +my $esxlocal = UnixDate($VALUES[0],"%Y-%m-%d %T %Z"); +my $utctime = UnixDate($VALUES[0],"%Y-%m-%d %T %Z"); +my $epochtime = UnixDate($VALUES[0],'%s'); +my $datesec = UnixDate($VALUES[0], "%a %b %T %Z %Y"); -$usercpu = sprintf("%.0f", $cpuutiltime); -$syscpu = sprintf("%.0f", $cpuproctime); -$idlecpu = sprintf("%.0f", $cpuidle); -$swapusedkvm = sprintf("%.0f", $swapusedk); -$swapfreekvm = sprintf("%.0f", $swapfreek); +my $usercpu = sprintf("%.0f", $cpuutiltime); +my $syscpu = sprintf("%.0f", $cpuproctime); +my $idlecpu = sprintf("%.0f", $cpuidle); +my $swapusedkvm = sprintf("%.0f", $swapusedk); +my $swapfreekvm = sprintf("%.0f", $swapfreek); $freekernelk = sprintf("%.0f", $freekernelk); while (length($swapusedkvm) < 6) { $swapusedkvm =~ s/^/ /; } @@ -309,7 +333,7 @@ while (length($swapusedk) < 11) { $swapusedk =~ s/^/ /; } while (length($swapfreek) < 11) { $swapfreek =~ s/^/ /; } -$msg = "linux +my $msg = "linux [date] $datesec [uname] @@ -320,14 +344,11 @@ $ESXCLOCK up $UPDAYS days, $UPHOURS:$UPMINS, 0 users, load average: $cpuload1min, $cpuload5min, $cpuload15min [who] @DF -[mount] [free] total used free shared buffers cached Mem:$totalmemoryk$usedtotalk$freememoryk$hostactualmemoryk$kernelmemk$freekernelk -/+ buffers/cache:$kernelmemk$freekernelk Swap:$swapmaxk$swapusedk$swapfreek -[ifconfig] -[route] [netstat] @PORTARRAY [ifstat] @@ -349,7 +370,7 @@ local: $esxlocal UTC: $utctime"; -$color = lc($cpustatus); +#my $color = lc($cpustatus); if ($debug > 0) { print $msg; Index: bb-ESX.pl =================================================================== --- bb-ESX.pl (revision 1) +++ bb-ESX.pl (working copy) @@ -48,13 +48,20 @@ my $color = "green"; my $today = `date`; -my $BB = "/usr/local/xymon/client/bin/bb"; -my $HOST = "localhost"; +my $BB = "$ENV{BBHOME}/bin/bb"; +#my $BB = "echo"; +my $HOST = $ENV{BBSERVERHOSTNAME}; +open PF,"$ENV{BBHOME}/.esxpass" + or die "Couldn't open $ENV{BBHOME}/.esxpass"; +my $pass = ; +chomp $pass; +close PF; + my %opts = (host => undef, userid => "root", - password => "Passw0rd"); + password => $pass); GetOptions (\%opts, "host=s");