shell脚本操作kvm虚拟机




#!/usr/bin/bash
#by cherish

#该kvm虚拟机是根据文件来创建的
iso=/var/lib/libvirt/images/muban.img
configure_file=/etc/libvirt/qemu/muban.xml
location1=/var/lib/libvirt/images
location2=/etc/libvirt/qemu

echo -e "\e[1;31m
1.创建默认配置虚拟机
2.创建自定义虚拟机
3.管理虚拟机
4.虚拟机快照
5.退出
\e[0m"

read -p "PLS input your choice: " choice

case $choice in
1)
    
    read -p "请输入你想创建的虚拟机个数: " count
    i=0
    while [ $i -lt $count ]
    do
        kvmname=`openssl rand -hex 5`
        kvmuuid=`uuidgen`
        kvmmac=`openssl rand -hex 3 | sed -r 's/..\B/&:/g'`
        echo "请稍候..."
            echo "正在复制......"
        cp $iso $location1/${kvmname}.img
            cp $configure_file $location2/${kvmname}.xml
        echo "复制已完成"
        sed -ri "s#muban#$kvmname#g" $location2/${kvmname}.xml
        sed -ri "s#kvmuuid#$kvmuuid#" $location2/${kvmname}.xml
        sed -ri "s#kvmmem#1536000#" $location2/${kvmname}.xml
        sed -ri "s#kvmcpu#1#" $location2/${kvmname}.xml
        sed -ri "s#a3:3f:d2#$kvmmac#" $location2/${kvmname}.xml
        virsh define $location2/${kvmname}.xml &> /dev/null
        let i++
    done        
        sleep 2
        virsh list --all    
        echo "$count Virt-machine is created"
    exit
    ;;
2)
    read -p "请输入你想要的虚拟机的名字: " name
    read -p "请输入该虚拟机的cpu个数: " count
    read -p "请输入该虚拟的内存: " mem
    
        uuid=`uuidgen`
    mac=`openssl rand -hex 3 | sed -r 's/..\B/&:/g'`
     echo "请稍后..."    
    echo "正在复制......"
    cp $iso $location1/${name}.img
        cp $configure_file $location2/${name}.xml
    echo "复制已完成"
    sed -ri "s#muban#$name#g" $location2/${name}.xml
    sed -ri "s#kvmmem#$mem#g" $location2/${name}.xml
    sed -ri "s#kvmcpu#$count#g" $location2/${name}.xml
    sed -ri "s#kvmuuid#$uuid#" $location2/${name}.xml
        sed -ri "s#kvmmac#$mac#" $location2/${name}.xml
    virsh define $location2/${name}.xml
    sleep 3
    virsh list --all
    echo "该虚拟机已创建成功."
    ;;
3)
    echo -e "\e[1;40m 即将输出你可以操作的虚拟机列表: \e[0m"
    sleep 3
    virsh list --all
    read -p "请输入你所想要管理的虚拟机: " name

    echo -e "\e[1;31m
    1、开启虚拟机
    2、关闭虚拟机
    3、重启虚拟机
    4、删除虚拟机
    5、退出
    \e[0m"

    read -p "输入你的操作: " option
    case $option in
    1)
        virsh start $name
        ;;
    2)
        virsh shutdown $name
        ;;
    3)
        virsh reboot $name
        ;;
    4)
        virsh shutdown $name &> /dev/null
        sleep 10
        a=`virsh snapshot-list virt-two |awk '{print $1}'|awk '!/^N/{print}'|awk '!/^-/{print}'`
        if [ ${#a} -gt 0 ];then
            read -p "此虚拟机有快照是否确认删除快照 [y] " p
            if [ "${p}" = "y" ];then
                 virsh snapshot-delete --snapshotname $a $name
                 sleep 3
                             virsh undefine $name
                rm -rf $location1/${name}.img
                             echo "$name 删除成功"
                    else
                            exit
                    fi
        fi        
        ;;
    5)
        exit
        ;;
    esac
    ;;    
4)
    
    echo -e "\e[1;40m 即将输出你可以操作的虚拟机列表: \e[0m"
    sleep 3
    virsh list --all
    read -p "请输入你所要操作的虚拟机: " name
    
    echo -e "\e[1;31m
    1.创建快照
    2.删除快照
    3.恢复快照
    4.退出
    \e[0m"
    read -p "请输入你对该虚拟机进行的快照操作: " choice
    case $choice in
    1)
        
        echo -e "\e[1;40m 即将输出你可以操作的虚拟机快照列表: \e[0m"
        sleep 3
         virsh snapshot-list $name
        echo "即将创建快照,请注意快照名字不可以一样."
        virsh snapshot-create-as $name ${name}.snap        
        ;;
    2)
        
        virsh snapshot-list $name
        virsh snapshot-delete --snapshotname ${name}.snap $name;;
    3)
        virsh snapshot-list $name
        virsh snapshot-revert $name ${name}.snap;;
    4)
        exit;;
    esac    

    ;;
5)    
    exit
    ;;
esac

 

 

 

 

你可能感兴趣的:(kvm脚本)