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/p_w_picpaths/$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/p_w_picpaths/$2.qcow2 /var/lib/libvirt/p_w_picpaths/

    $2node.qcow2 &>/dev/null    

    virt-install \

    --name $2 \

    --ram 1000 \

    --disk /var/lib/libvirt/p_w_picpaths/$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/p_w_picpaths/$2node.qcow2        ##删除原磁盘快照文件

    qemu-img create -f qcow2 -b /var/lib/libvirt/p_w_picpaths/$2.qcow2 /var/lib/libvirt/p_w_picpaths/

    $2node.qcow2 &>/dev/null                           ##重新创建快照

    virt-install \                                     ##使用这个新快照创建虚拟机

    --name $2 \

    --ram 1000 \

    --disk /var/lib/libvirt/p_w_picpaths/$2node.qcow2 \

    --import &>/dev/null &

    echo Reset vm $2 successfule!!!

    ;;

  *)                ##其他,显示报错信息

    echo"ERROR:please input create|nodecreate|start|view|stop|reset after vm-ctl"

esac