diff --git a/pve-reporting/get_vminfo_clu1.pl b/pve-reporting/get_vminfo_clu1.pl index 3704c74..b1c2ae4 100644 --- a/pve-reporting/get_vminfo_clu1.pl +++ b/pve-reporting/get_vminfo_clu1.pl @@ -2,8 +2,8 @@ #use Data::Dumper; if ($ARGV[0] eq "") { - printf "no mail address given to send report to. exit\n"; - exit 1; + printf "no mail address given to send report to. exit\n"; + exit 1; } @servers = qw/conpve29 conpve28 conpve20 conpve17/; @@ -14,37 +14,40 @@ for $server (@servers) { @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; + $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; + 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"; + $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; + @tags=split ";", $vms{$1}{'tags'}; + print "tags $vms{$1}{'tags'}\n"; + foreach (@tags) { print "tag $_\n"; $tag{$_}{'name'}=$_; } + print "----- ID $vmid\n"; } - print "\n"; + print "\n"; } open HTML, ">output1.html"; @@ -75,73 +78,103 @@ printf HTML ' '; printf HTML "\n\n"; -open OUTPUT, ">output1.txt"; -open EUREGON, ">output_euregon.txt"; -print "-- print vm information to console and in file output1.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; -printf EUREGON $str; +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)|DESCRIPTION|TAGS|STATUS|HOST|PID|CDROM\n"; +printf $hstr; +printf OUTPUT $hstr; $str = sprintf "\n\n"; printf HTML $str; + foreach $vm (sort keys %vms) { $str = sprintf ("%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s\n", - $vm, - $vms{$vm}{'name'}, - $vms{$vm}{'os'}, - $vms{$vm}{'disksizes'}, - $vms{$vm}{'diskusages'}, - $vms{$vm}{'sockets'}, - $vms{$vm}{'cores'}, - $vms{$vm}{'memory'}, - $vms{$vm}{'bootdisk'}, - $vms{$vm}{'description'}, - $vms{$vm}{'tags'}, - $vms{$vm}{'status'}, - $vms{$vm}{'host'}, - $vms{$vm}{'pid'}, - $vms{$vm}{'cdrom'} - ); + $vm, + $vms{$vm}{'name'}, + $vms{$vm}{'os'}, + $vms{$vm}{'disksizes'}, + $vms{$vm}{'diskusages'}, + $vms{$vm}{'sockets'}, + $vms{$vm}{'cores'}, + $vms{$vm}{'memory'}, + $vms{$vm}{'bootdisk'}, + $vms{$vm}{'description'}, + $vms{$vm}{'tags'}, + $vms{$vm}{'status'}, + $vms{$vm}{'host'}, + $vms{$vm}{'pid'}, + $vms{$vm}{'cdrom'} + ); printf $str; - # if tag = euregon : extra datei - printf EUREGON $str if ($vms{$vm}{'tags'} =~ /euregon/i); + # if tag = euregon : extra datei + #printf EUREGON $str if ($vms{$vm}{'tags'} =~ /euregon/i); - # if disksize < 1072623616 : ignorieren - - # ausgabe + # ausgabe printf OUTPUT $str; - $vms{$vm}{'disksizes'} =~ s/,/
/g; - $vms{$vm}{'diskusages'} =~ s/,/
/g; - $vms{$vm}{'tags'} =~ s/;/
/g; + $alltags = $vms{$vm}{'tags'}; + $alltags =~ s/;/
/g; + $allsizes = $vms{$vm}{'disksizes'}; + $allsizes =~ s/;/
/g; + $allusages = $vms{$vm}{'diskusages'}; + $allusages =~ s/;/
/g; + $str = sprintf ("\n", - $vm, - $vms{$vm}{'name'}, - $vms{$vm}{'os'}, - $vms{$vm}{'disksizes'}, - $vms{$vm}{'diskusages'}, - $vms{$vm}{'sockets'}, - $vms{$vm}{'cores'}, - $vms{$vm}{'memory'}, - $vms{$vm}{'bootdisk'}, - $vms{$vm}{'description'}, - $vms{$vm}{'tags'}, - $vms{$vm}{'status'}, - $vms{$vm}{'host'}, - $vms{$vm}{'pid'}, - $vms{$vm}{'cdrom'} - ); + $vm, + $vms{$vm}{'name'}, + $vms{$vm}{'os'}, + $allsizes, + $allusages, + $vms{$vm}{'diskusages'}, + $vms{$vm}{'sockets'}, + $vms{$vm}{'cores'}, + $vms{$vm}{'memory'}, + $vms{$vm}{'bootdisk'}, + $vms{$vm}{'description'}, + $alltags, + $vms{$vm}{'status'}, + $vms{$vm}{'host'}, + $vms{$vm}{'pid'}, + $vms{$vm}{'cdrom'} + ); printf HTML $str; } close OUTPUT; -close EUREGON; printf HTML "\n
VMIDNAMEOSDISKSIZE(S)DISKUSAGE(S)SOCKETSCORESMEMORY(MB)BOOTDISK(GB)DESCRIPTIONTAGSSTATUSHOSTPIDCDROM
%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s
\n"; close HTML; - -print "-- send output1.txt as attachement via email\n"; +# schreibe einzelne tagfiles +foreach $t (keys %tag) { + print "t $t\n"; + open OUT, ">output1_$t.csv"; + printf OUT $hstr; + foreach $vm (sort keys %vms) { + print "1 $vms{$vm}{'tags'} 2 $tag{$t}{'name'}\n"; + if ( $vms{$vm}{'tags'} =~ /$t/ ) { + $str = sprintf ("%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s\n", + $vm, + $vms{$vm}{'name'}, + $vms{$vm}{'os'}, + $vms{$vm}{'disksizes'}, + $vms{$vm}{'diskusages'}, + $vms{$vm}{'sockets'}, + $vms{$vm}{'cores'}, + $vms{$vm}{'memory'}, + $vms{$vm}{'bootdisk'}, + $vms{$vm}{'description'}, + $vms{$vm}{'tags'}, + $vms{$vm}{'status'}, + $vms{$vm}{'host'}, + $vms{$vm}{'pid'}, + $vms{$vm}{'cdrom'} + ); + print OUT $str; + } + } + close OUT; +} +print "-- send output1.csv as attachement via email\n"; # mail open MAIL, ">mail1.tmp"; @@ -150,15 +183,5 @@ printf MAIL "FROM: CONET Services Monitoring Reporter mail1.tmp"; -printf MAIL "TO: $ARGV[0]\n"; -printf MAIL "FROM: CONET Services Monitoring Reporter /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; + $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; + 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"; + $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 "\n"; } open HTML, ">output2.html"; @@ -75,8 +75,8 @@ printf HTML ' '; printf HTML "\n\n"; -open OUTPUT, ">output2.txt"; -print "-- print vm information to console and in file output2.txt\n"; +open OUTPUT, ">output2.csv"; +print "-- print vm information to console and in file output2.csv\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; @@ -85,45 +85,45 @@ $str = sprintf "/g; - $vms{$vm}{'diskusages'} =~ s/,/
/g; - $vms{$vm}{'tags'} =~ s/;/
/g; + $vms{$vm}{'disksizes'} =~ s/,/
/g; + $vms{$vm}{'diskusages'} =~ s/,/
/g; + $vms{$vm}{'tags'} =~ s/;/
/g; $str = sprintf ("\n", - $vm, - $vms{$vm}{'name'}, - $vms{$vm}{'os'}, - $vms{$vm}{'disksizes'}, - $vms{$vm}{'diskusages'}, - $vms{$vm}{'sockets'}, - $vms{$vm}{'cores'}, - $vms{$vm}{'memory'}, - $vms{$vm}{'bootdisk'}, - $vms{$vm}{'description'}, - $vms{$vm}{'tags'}, - $vms{$vm}{'status'}, - $vms{$vm}{'host'}, - $vms{$vm}{'pid'}, - $vms{$vm}{'cdrom'} - ); + $vm, + $vms{$vm}{'name'}, + $vms{$vm}{'os'}, + $vms{$vm}{'disksizes'}, + $vms{$vm}{'diskusages'}, + $vms{$vm}{'sockets'}, + $vms{$vm}{'cores'}, + $vms{$vm}{'memory'}, + $vms{$vm}{'bootdisk'}, + $vms{$vm}{'description'}, + $vms{$vm}{'tags'}, + $vms{$vm}{'status'}, + $vms{$vm}{'host'}, + $vms{$vm}{'pid'}, + $vms{$vm}{'cdrom'} + ); printf HTML $str; } close OUTPUT; @@ -131,7 +131,7 @@ printf HTML "\n
%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s
\n"; close HTML; -print "-- send output2.txt as attachement via email\n"; +print "-- send output2.csv as attachement via email\n"; open MAIL, ">mail2.tmp"; printf MAIL "TO: $ARGV[0]\n"; @@ -139,5 +139,6 @@ printf MAIL "FROM: CONET Services Monitoring Reporter