我可以非交互地向 virtualbox 映像发送键盘命令吗?

我可以非交互地向 virtualbox 映像发送键盘命令吗?

我正在试验 VirtualBox 托管的服务器映像。

我有一个已安装的 Linux 操作系统的快照,可以进行配置。

在主机操作系统(也是 Linux)上,我希望能够使用 shell 脚本以非交互方式创建和配置新的服务器映像。

目前,手动工作流程是:

  1. 在 VirtualBox 中,克隆原始图像。
  2. 启动客户虚拟机并使用默认用户名/密码登录(Linux,非图形化)
  3. 在客户机上运行configure-me.sh some_argument
  4. 在客户机上,更改 root 密码。
  5. 在访客侧,注销但仍保持机器运行。
  6. 在主机上,应用程序现在可以使用客户的服务。

我可以从主机自动完成所有这些操作吗?(是的,这个过程会经常重复。)关键要求似乎是

  • 等待来宾完成启动,
  • 向客户发送虚假的按键,并相信结果符合预期(我们可以假设预先编写的配置脚本是可靠的)。

VirtualBox 可以做到这一点吗?

答案1

您可以使用以下命令通过 VBoxManage 将主机上的按键发送到 Virtualbox 中的客户机控制虚拟机

VBoxManage controlvm name_of_your_vm keyboardputscancode <hex> [<hex> ...]

您需要找出所有命令的扫描码。

另一种方法是直接通过客人控制选项:

VBoxManage guestcontrol name_of_your_vm run /location/of/your/script --username user --password password

这将以给定的用户身份登录并执行您的脚本。

答案2

另一个非 VirtualBox 特有的选项是启动一个 TCP/IP 服务器,从/sbin/ifup-local其他地方接收命令。

ifup-local将在网络接口启动时触发。

相关内容