###提前准备好光盘文件
#!/bin/bash
#进行源配置
cd /etc/yum.repos.d/
rm -rf *
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache
#安装
yum install libvirt virt-install qemu-kvm -y
#启动
systemctl start libvirtd.service
systemctl enable libvirtd.service
install-new(){
read -p "请输入新建虚拟机名:
" newname
virsh list --all | grep "\<$newname\>"
if [ $? -eq 0 ]
then
echo -e "\033[41m虚拟机${newname}已经存在!\033[0m"
else
read -p "请输入安装目录路径:(例:/data)
" azpath
if [ -d ${azpath} ]
then
read -p "请输入光盘路径:(例:/data/CentOS-7-x86_64-DVD-1708.iso)
" cdpath
if [ -e ${cdpath} ]
then
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name ${newname} --memory 1024 --vcpus 1 --disk /${azpath}/centos2.raw,format=raw,size=10 --cdrom ${cdpath} --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
else
echo -e "\033[41m路径${cdpath}不是光盘!\033[0m"
fi
else
echo -e "\033[41m目录${azpath}不存!\033[0m"
fi
fi
}
rename-host(){
read -p "请输入虚拟机名:
" ylname
virsh list --all | grep "\<$ylname\>" >> /dev/null
if [ $? -ne 0 ]
then
echo -e "\033[41m虚拟机${ylname}不存在!\033[0m"
else
read -p "请输入要重命名的名称:
" mbname
virsh domrename ${ylname} ${mbname}
echo "重命名成功!"
fi
}
check-info(){
virsh list --all
}
begin-end(){
read -p "请输入需要启动或关闭的虚拟机:
" czname
virsh list --all | grep "\<$czname\>"
if [ $? -ne 0 ]
then
echo -e "\033[31m虚拟机${czname}不存在!\033[0m"
else
read -p "请输入需要进行的操作:a:启动 b:关闭:
" czstring
case $czstring in
a)
echo -e "\033[32m启动${czname}\033[0m"
virsh start ${czname}
;;
b)
echo -e "\033[41m关闭${czname}\033[0m"
virsh destroy ${czname}
;;
*)
echo -e "\033[41m操作错误!\033[0m"
esac
fi
}
while [ 1 -lt 2 ]
do
echo -e "\033[43m1-------安装新的虚拟机--------\033[0m"
echo -e "\033[43m2-------虚拟机重命名----------\033[0m"
echo -e "\033[43m3----查看所有虚拟机状态-------\033[0m"
echo -e "\033[43m4----启动虚拟机或关闭虚拟机---\033[0m"
echo -e "\033[43m--------按其他数字退出--------\033[0m"
read -p "请输入所需操作对应编号:
" number
case $number in
1)
install-new
;;
2)
rename-host
;;
3)
check-info
;;
4)
begin-end
;;
*)
exit 0
esac
done