Shell脚本编程——案例一
编程要求:
1.创建vm-ctl脚本,在/bin/下
2.实现功能:创建虚拟机、创建虚拟机快照、开启虚拟机、显示虚拟机、停止虚拟机、重置虚拟机。
脚本实现预期结果:
sh vm-ctl create|nodecreate|start|view|stop|reset vmname
实现脚本如下:
#!/bin/bash
case "$1" in
create) ##创建虚拟机
echo create vm $2 ...
virt-install \
--name $2 \
--ram 1000 \
--file /var/lib/libvirt/images/$2.qcow2 \
--file-size 8 \
--cdrom /home/kiosk/Downloads/rhel-server-7.1-x86_64-dvd.iso &
echo Create vm $2 successful! Please create vmnode by nodecreate after this!!! ##创建完虚拟机之后,请再创建虚拟机快照之后使用虚拟机快照来操作。
;;
nodecreate) ##创建虚拟机快照
virsh destroy $2
virsh undefine $2
qemu-img create -f qcow2 -b /var/lib/libvirt/images/$2.qcow2 /var/lib/libvirt/images/
$2node.qcow2 &>/dev/null
virt-install \
--name $2 \
--ram 1000 \
--disk /var/lib/libvirt/images/$2node.qcow2 \
--import &>/dev/null &
echo Create vm $2node successfull!!!
;;
start) ##开启虚拟机
echo start vm $2 ...
virsh start $2 &>/dev/null
echo Start vm $2 successful!!!
;;
view) ##显示虚拟机
echo view vm $2 ...
virt-viewer $2 &>/dev/null
echo View vm $2 successful!!!
;;
stop) ##关闭/停止虚拟机
echo stop vm $2 ...
virsh destroy $2 &>/dev/null
echo vm $2 is stopped!!!
;;
reset) ##重置虚拟机
echo reset vm $2 ...
virsh destroy $2 &>/dev/null
virsh undefine $2 &>/dev/null
rm -fr /var/lib/libvirt/images/$2node.qcow2 ##删除原磁盘快照文件
qemu-img create -f qcow2 -b /var/lib/libvirt/images/$2.qcow2 /var/lib/libvirt/images/
$2node.qcow2 &>/dev/null ##重新创建快照
virt-install \ ##使用这个新快照创建虚拟机
--name $2 \
--ram 1000 \
--disk /var/lib/libvirt/images/$2node.qcow2 \
--import &>/dev/null &
echo Reset vm $2 successfule!!!
;;
*) ##其他,显示报错信息
echo"ERROR:please input create|nodecreate|start|view|stop|reset after vm-ctl"
esac