From e9eb88065b139e1d64d05ef2ac4d21f447f26027 Mon Sep 17 00:00:00 2001 From: ageissler Date: Mon, 3 Feb 2025 10:24:27 +0100 Subject: [PATCH] =?UTF-8?q?conetadm/pve-reporting/get=5Fvminfo.pl=20hinzug?= =?UTF-8?q?ef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- conetadm/pve-reporting/get_vminfo.pl | 88 ++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 conetadm/pve-reporting/get_vminfo.pl diff --git a/conetadm/pve-reporting/get_vminfo.pl b/conetadm/pve-reporting/get_vminfo.pl new file mode 100644 index 0000000..f372de6 --- /dev/null +++ b/conetadm/pve-reporting/get_vminfo.pl @@ -0,0 +1,88 @@ +#!/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/conpve28 conpve29 conpve20/; + +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); + } + + 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}{'usages'}, + $vms{$1}{'sockets'}, + $vms{$1}{'cores'}, + $vms{$1}{'description'}, + $vms{$1}{'tags'}, + $vms{$1}{'cdrom'} + ) = $_ =~ /([^|]*).([^|]*).([^|]*).([^|]*).([^|]*).([^|]*).([^|]*).([^|]*).([^|]*)$/gm; + } +} + +#print Dumper(%vms); + +open OUTPUT, ">output.txt"; +print "-- print vm information to console and in file output.txt\n"; +$str = sprintf "VMID|NAME|OS|DISKSIZE(S)|DISKUSAG(S)|SOCKETS|CORES|MEMORY(MB)|BOOTDISK(GB)|DESCRIPTION|TAGS|STATUS|HOST|PID|CDROM\n"; +printf $str; +printf OUTPUT $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'} + ); + printf $str; + printf OUTPUT $str; +} +close OUTPUT; + + +print "-- send output.txt as attachement via email\n"; + +open MAIL, ">mail.tmp"; +printf MAIL "TO: $ARGV[0]\n"; +printf MAIL "FROM: CONET Services Monitoing Reporter