Ema*_* Ey 2 virtualbox shell-script ubuntu
我有一台 Ubuntu 服务器,需要在其上始终运行 Virtualbox 虚拟机。VM 由VMAdmin
没有管理员权限的特定用户管理。我需要创建一个 init.d 脚本来处理我的虚拟机 VM。
这应该:
以下脚本负责上述所有工作:
#! /bin/sh
# /etc/init.d/vbox
#Edit these variables!
VMUSER=VMAdmin
VMNAME="cdb62186-7c30-4c25-a0b0-e4a32cfb0504"
BASEFOLDER=/home/VMAdmin/path/to/backups/
case "$1" in
start)
echo "Starting VirtualBox VM..."
sudo -H -u $VMUSER VBoxManage startvm "$VMNAME" --type headless
;;
reset)
echo "Resetting VirtualBox VM..."
sudo -H -u $VMUSER VBoxManage controlvm "$VMNAME" reset
;;
stop)
echo "Saving state of Virtualbox VM..."
sudo -H -u $VMUSER VBoxManage controlvm "$VMNAME" savestate
;;
shutdown)
echo "Shutting down Virtualbox VM..."
sudo -H -u $VMUSER VBoxManage controlvm "$VMNAME" acpipowerbutton
;;
status)
sudo -H -u $VMUSER VBoxManage list vms -l | grep -e ^"$VMNAME": -e ^State | sed s/\ \ //g | cut -d: -f2-
;;
backup)
echo ""
sudo -H -u $VMUSER VBoxManage controlvm "$VMNAME" acpipowerbutton
echo "Waiting for VM "$VMNAME" to poweroff..."
until $(sudo -H -u $VMUSER VBoxManage showvminfo --machinereadable "$VMNAME" | grep -q ^VMState=.poweroff.)
do
sleep 1
done
FILENAME=$(date +"%Y_%m_%d-%T")
echo "Backing up Virtualbox VM to '$BASEFOLDER$FILENAME'..."
sudo -H -u $VMUSER VBoxManage clonevm "$VMNAME" --options keepallmacs --name $FILENAME --basefolder $BASEFOLDER
echo "Restarting VirtualBox VM..."
sudo -H -u $VMUSER VBoxManage startvm "$VMNAME" --type headless
echo ""
;;
*)
echo "Usage: sudo service vbox {start|stop|status|shutdown|reset|backup}"
exit 1
;;
esac
exit 0
Run Code Online (Sandbox Code Playgroud)
告诉脚本第一个关闭,最后一个启动:
sudo update-rc.d vbox defaults 99 01
Run Code Online (Sandbox Code Playgroud)
要将备份任务添加到 crontab,请运行:
sudo crontab -e
Run Code Online (Sandbox Code Playgroud)
并添加如下一行:
* 3 * * 5 service vbox backup
Run Code Online (Sandbox Code Playgroud)
这将在周五凌晨 3 点运行每周备份。有关创建 crontab 任务的更多信息,请参阅:http : //www.cyberciti.biz/faq/how-do-i-add-jobs-to-cron-under-linux-or-unix-oses/
相关问题:等待 Virtualbox VM 关闭的 Bash 脚本?
归档时间: |
|
查看次数: |
3560 次 |
最近记录: |