#!/bin/sh usage () { echo 'usage: kvmstats.sh [-u K|M|G]' exit 1 } POW=$(echo 1024 ^ 3 | bc) while echo $1 | grep -q '^-[[:alnum:]]' do case $1 in '-u') case $2 in 'K') POW=$(echo 1024 ^ 1 | bc) ;; 'M') POW=$(echo 1024 ^ 2 | bc) ;; 'G') POW=$(echo 1024 ^ 3 | bc) ;; *) usage esac ;; *) usage esac shift done # since libvirt seems to store memoy in KiB, POW must be lowered by 1 POW=$(expr $POW / 1024) for DEP in hxselect lvs tempfile do if [ -z "$(which $DEP)" ] then echo "kvmstats.sh: $DEP not found in \$PATH" 1>&2 exit 1 fi done TMPFILE=$(tempfile) LVSOUT=$(tempfile) lvs --units b --nosuffix >$LVSOUT for VM in $(virsh list --all --name) do VCPU=$(hxselect -c 'domain vcpu' $TMPFILE ( echo vm vcpu ram disk cat $TMPFILE awk '{ vcpu += $2; ram += $3; disk += $4 } END { print "TOTAL", vcpu, ram, disk }' <$TMPFILE ) | column -t rm $TMPFILE $LVSOUT