#!/bin/bash
# 此脚本为管理KVM虚拟机
dir=/data/kvm
xml=/etc/libvirt/qemu
if [ $# -lt 1 ];then
echo "脚本用法:"
echo "$0 clone [kvmname1,kvmname2....] #克隆虚拟机"
echo "$0 start [kvmname1,kvmname2....] #开启虚拟机"
echo "$0 destroy [kvmname1,kvmname2....] #关闭虚拟机"
echo "$0 undefine [kvmname1,kvmname2....] #删除虚拟机"
exit 250
else
case $1 in
clone)
for i in `echo $2|sed 's/,/ /g'`
do
old_kvm=`virsh list --all|awk '{if($0!~/Name/&&$NF!=running){print $2}}'|grep -v "^$"|head -1`
virt-clone -o $old_kvm -n $i -f ${dir}/${i}.img
####修改vnc端口
port=$(grep ".*vnc.*port='[0-9]\+'" /etc/libvirt/qemu/${i}.xml|grep -o '[0-9]\{4\}')
sum=$(virsh list --all|awk '{print $2}'|grep -Ev "^$|Name"|wc -l)
let new_port=$port+$sum+1
sed -i "s/${port}/${new_port}/g" ${xml}/${i}.xml
####重新定义域
virsh define ${xml}/${i}.xml
shift
done ;;
start)
for i in `echo $2|sed 's/,/ /g'`
do
virsh start $i
shift
done ;;
destroy)
for i in `echo $2|sed 's/,/ /g'`
do
virsh destroy $i
shift
done ;;
undefine)
for i in `echo $2|sed 's/,/ /g'`
do
virsh undefine $i
rm -rf $dir/${i}.img
shift
done ;;
esac
fi