#!/bin/sh

# Gibt Infos ueber alle KVM-Guests aus
# Marcel Meckel

MEMORY_SUMME="0"
MEMORY_IN_SERVER_KB="$(free -k | head -n 2 | tail -n 1 | awk '{print $2}')"
OUTPUT=""
GUESTS_SORTED="$(virsh list --all | tail -n +3 | head -n -1 | awk '{print $2}' | sort)"

COLOR_BOLD="\e[1m"
COLOR_RED="\e[31;1m"
COLOR_BLUE="\e[34;1m"
COLOR_NORMAL="\e[m"

for dom in ${GUESTS_SORTED}
do
        OUTPUT="${OUTPUT}$(virsh dominfo $dom | grep -E 'Name|State|CPU\(|Max mem|^$' | perl -p -e 's/(running$)/'$COLOR_BLUE'$1'$COLOR_NORMAL'/, s/(shut off$)/'$COLOR_RED'$1'$COLOR_NORMAL'/, s/^(Name:\s+)(.+)$/$1'$COLOR_BOLD'$2'$COLOR_NORMAL'/')\n\n"
done

MEMORY_SUMME="$(echo "$OUTPUT" | grep -F 'Max memory' | awk 'BEGIN {S=0} {S+=$3} END {print S}')"

EXTRA1="RAM VMs:\t${COLOR_BLUE}${MEMORY_SUMME}${COLOR_NORMAL} kByte"
EXTRA2="RAM im Server:\t${COLOR_BLUE}${MEMORY_IN_SERVER_KB}${COLOR_NORMAL} kByte"

OUTPUT="${OUTPUT}${EXTRA1}\n${EXTRA2}\n"

echo -en "${OUTPUT}"
