Virtualbox开机启动,service命令管理

时间:2022-05-20 20:45:45

#!/bin/bash
#chkconfig:235 80 20
#description:start or stop vbox
#Author:Qty~20180502
#OS:RedHatEnterprise6.4,上传vbox至/etc/init.d/并赋权755,chkconfig --add vbox添加后可开机启动并用service命令管理

. /etc/rc.d/init.d/functions
. /etc/sysconfig/network

VBoxManage list vms &>/dev/null
[ $? -eq 0 ] && VBuuid=($(VBoxManage list vms | awk '{print $2}' | tr -d {})) || VBuuid=()
function start {
if [ ${#VBuuid[*]} -gt 0 ];then
  for vbstart in ${VBuuid[*]}
  do
    VBname=$(VBoxManage showvminfo ${vbstart} --machinereadable | egrep "name\b" | awk -F'"' '{print $2}')
    [ $(VBoxManage showvminfo ${vbstart} --machinereadable | egrep "VMState\b" | awk -F'"' '{print $2}')=running ] && echo -e "${VBname}正在运行!" || VBoxManage startvm ${vbstart} --type headless &>/dev/null
  done
else
  echo -e "本机未安装VirtualBox!"
fi
}

function stop {
VBoxManage list runningvms &>/dev/null
[ $? -eq 0 ] && VBrunning=($(VBoxManage list runningvms | awk '{print $2}' | tr -d {})) || VBrunning=()
if [ ${#VBrunning[*]} -gt 0 ];then
  for vbstop in ${VBrunning[*]}
  do
    VBoxManage controlvm ${vbstop} acpipowerbutton && echo -e "关闭$(VBoxManage showvminfo ${vbstop} --machinereadable | egrep "name\b" | awk -F'"' '{print $2}')"
  done
else
  echo "本机没有运行的VirtualBox!"
fi
}

function status {
if [ ${#VBuuid[*]} -gt 0 ];then
  for vbstate in ${VBuuid[*]}
  do
    name=$(VBoxManage showvminfo ${vbstate} --machinereadable | egrep "name\b" | awk -F'"' '{print $2}')
    state=$(VBoxManage showvminfo ${vbstate} --machinereadable | egrep "VMState\b" | awk -F'"' '{print $2}')
    echo -e "${name}\t${state}"
  done
else
  echo -e "本机未安装VirtualBox!"
fi
}

case "$1" in
  start)
    start;;
  stop)
    stop;;
  status)
    status;;
  *)
    echo -e "Format error!\neg:service $0 {start|stop|status}"
    exit 1;;
esac