#!/usr/bin/perl
#use Data::Dumper;
if ($ARGV[0] eq "") {
printf "no mail address given to send report to. exit\n";
exit 1;
}
@servers = qw/conpve29 conpve28 conpve20 conpve17/;
print "-- get general info from every host\n";
for $server (@servers) {
print "--- server $server\n";
@serverinfo = `ssh -q -l root $server qm list | sed "s/\$/$server/" | grep -v VMID 2> /dev/null`;
foreach (@serverinfo) {
($vmid,
$vms{$1}{'name'},
$vms{$1}{'status'},
$vms{$1}{'memory'},
$vms{$1}{'bootdisk'},
$vms{$1}{'pid'},
$vms{$1}{'host'}
) = $_ =~ / *([0-9]{3,4}) *([^ ]*) *([a-z]*) *([0-9]*) *([0-9.]*) *([0-9]*) *($server)/gm;
}
$vmlist="";
foreach $vmid (keys %vms) {
$vmlist = $vmlist . "$vmid " if ($vms{$vmid}{'host'} eq $server);
}
chomp $vmlist;
print "---- get more details from vms $vmlist\n";
@more = `ssh -q -l root $server bash /opt/pve-reporting/get_vmid_info.sh $vmlist 2> /dev/null`;
foreach (@more) {
chomp;
( $vmid,
$vms{$1}{'os'},
$vms{$1}{'disksizes'},
$vms{$1}{'diskusages'},
$vms{$1}{'sockets'},
$vms{$1}{'cores'},
$vms{$1}{'description'},
$vms{$1}{'tags'},
$vms{$1}{'cdrom'},
$vms{$1}{'nets'}
) = $_ =~ /([^|]*).([^|]*).([^|]*).([^|]*).([^|]*).([^|]*).([^|]*).([^|]*).([^|]*).([^|]*)$/gm;
@tags=split ";", $vms{$1}{'tags'};
print "tags $vms{$1}{'tags'}\n";
foreach (@tags) { print "tag $_\n"; $tag{$_}{'name'}=$_; }
print "----- ID $vmid\n";
}
print "\n";
}
open HTML, ">output1.html";
printf HTML "\n
\n\n";
printf HTML '
';
printf HTML "\n\n";
open OUTPUT, ">output1.csv";
print "-- print vm information to console and in file output1.csv\n";
$hstr = sprintf "VMID|NAME|OS|DISKSIZE(S)|DISKUSAGE(S)|SOCKETS|CORES|MEMORY(MB)|BOOTDISK(GB)|NETS|DESCRIPTION|TAGS|STATUS|HOST|PID|CDROM\n";
printf $hstr;
printf OUTPUT $hstr;
$str = sprintf "