Erstellt eine schicke Übersicht über alle im vSphere vorhandenen VMs und den zugehörigen VMware Tools Status. Das ganze hübsch in bunt ausgegeben.
Wenn kein "--pattern" angegeben wird, so werden alle VMs angezeigt.
Kleiner Tipp - fürs sortieren hilft sort:
sort -k2
Soll die Farbe raus (für Weiterverarbeitung o.ä.) - ANSI colors kann man leicht mit sed entfernen:
sed 's/\x1b\[[0-9]\{1,2\}\(;[0-9]\{1,2\}\)\{0,2\}m//g'
Das ganze darf natürlich nach Lust und Laune verändert und umgedübelt werden.

#!/usr/bin/perl -w
#
# Mike 'AmP' Liebsch
#
# This script searches for a VM and prints the VMware Tools Status
# Usage:
# tools_vm.pl <login> [--pattern <name>] # Searches for the pattern
use strict;
use warnings;
use VMware::VIRuntime;
use Term::ANSIColor qw(:constants);
$Term::ANSIColor::AUTORESET = 1;
use constant DEBUG => 0;
my %opts = (
'pattern' => {
type => "=s",
help => "The pattern to search in the name of a virtual machine",
required => 0,
},
);
Opts::add_options(%opts);
# read/validate options and connect to the server
Opts::parse();
Opts::validate();
Util::connect();
# supplied name
my $pattern = Opts::get_option('pattern');
if (! defined $pattern) { $pattern = ""; }
# Search for vmc
my $vm_views =
Vim::find_entity_views(view_type => 'VirtualMachine',
filter => { 'config.name' => qr/$pattern/ });
my $found=0;
foreach (@$vm_views) {
my $vmobj = $_;
my $vmname = $vmobj->name;
my $vstatus = $vmobj->guest->toolsStatus->val;
if ( $vstatus eq "toolsOk") {
printf ("%-40s\t", $vmname);
print BOLD GREEN "OK\n";
} elsif ( $vstatus eq "toolsNotInstalled") {
printf ("%-40s\t", $vmname);
print BOLD RED "Not Installed\n";
} elsif ( $vstatus eq "toolsNotRunning") {
printf ("%-40s\t", $vmname);
print BOLD RED "Not Running\n";
} elsif ( $vstatus eq "toolsOld") {
printf ("%-40s\t", $vmname);
print BOLD YELLOW "Out of Date\n";
} else {
printf ("%-40s\t", $vmname);
print BOLD YELLOW "unknown \"$vstatus\"\n";
}
$found = 1;
}
if ( $found == 0 ) { print "Sorry no VMs for pattern \"$pattern\" could be found!\n" };
# disconnect from the server
Util::disconnect();
# -EOF-