下面将展示如何用 Xshell 来连接和控制(通过 vboxmanage)Virtualbox
Xshell 是运行在 Windows 10 上,虚拟机中运行 CentOS 7
- 首先,编写控制虚拟机启动/保存状态的批处理命令
启动脚本
# 进入 d: 盘;进入虚拟机安装目录;
# 执行启动虚拟机的命令; headless 表示无GUI界面
d:
cd Tools\Oracle\VirtualBox
VBoxManage.exe startvm "CentOS" --type headless
保存状态脚本
d:
cd Tools\Oracle\VirtualBox
VBoxManage.exe controlvm "CentOS" savestate
将脚本保存在 C:\Users\username\Documents\NetSarang Computer\6\Xshell\Sessions\vms 下
关于 Vboxmanage 的其他命令
# 列出所有虚拟机
$ VBoxManage.exe list vms
"CentOS" {c31642b9-c1db-4948-9c4f-677a67b64177}
# 列出正在运行的虚拟机
$ VBoxManage.exe list runningvms
"CentOS" {c31642b9-c1db-4948-9c4f-677a67b64177}
# 显示虚拟机的信息
VBoxManage.exe showvminfo "CentOS"
# 启动虚拟机,无GUI界面
VBoxManage.exe startvm "CentOS" --type headless
VBoxManage.exe controlvm poweroff
VBoxManage.exe controlvm savestate
通过 ssh 连接虚拟机(这里使用的虚拟网卡是 host-noly 模式)
使用 Virtulbox 保存状态后再恢复,有时会出现无法和虚拟机连接的情况;从虚拟机 ping 物理机后又恢复正常。
这里写一个服务,使虚拟机不断地 ping 物理机
ping 物理机的脚本
➜ ~ cat startup-scripts/ping-vbox.sh
#!/bin/bash
ping 192.168.56.1 &> /dev/null
➜ ~ chmod +x startup-scripts/ping-vbox.sh
服务脚本
➜ ~ sudo cat /etc/systemd/system/ping-vbox.service
[Unit]
Description="Active Connect for VirtualBox"
[Service]
ExecStart=/home/admin/startup-scripts/ping-vbox.sh
[Install]
RequiredBy=multi-user.target
# start 运行服务
# enable 开机自动运行服务
➜ ~ sudo systemctl daemon-reload
➜ ~ sudo systemctl start ping-vbox
➜ ~ sudo systemctl enable ping-vbox
在 xshell 中通过批处理文件控制虚拟机开关
[C:\~]$ vms\CentOS-start.bat
[C:\~]$ vms\CentOS-saveState.bat