#!/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/pveadmin4.conadm.de/; 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'} ) = $_ =~ /([^|]*).([^|]*).([^|]*).([^|]*).([^|]*).([^|]*).([^|]*).([^|]*).([^|]*)$/gm; print "----- ID $vmid\n"; } print "\n"; } #print Dumper(%vms); open HTML, ">output2.html"; printf HTML "
\n\n"; open OUTPUT, ">output2.txt"; print "-- print vm information to console and in file output2.txt\n"; $str = sprintf "VMID|NAME|OS|DISKSIZE(S)|DISKUSAGE(S)|SOCKETS|CORES|MEMORY(MB)|BOOTDISK(GB)|DESCRIPTION|TAGS|STATUS|HOST|PID|CDROM\n"; printf $str; printf OUTPUT $str; $str = sprintf "| VMID | NAME | OS | DISKSIZE(S) | DISKUSAGE(S) | SOCKETS | CORES | MEMORY(MB) | BOOTDISK(GB) | DESCRIPTION | TAGS | STATUS | HOST | PID | CDROM |
| %s | %s | %s | %s | %s | %s | %s | %s | %s | %s | %s | %s | %s | %s | %s |