cylab-be/php-vbox-api

一个用于驱动VirtualBox的PHP库

1.7.5 2023-02-23 12:35 UTC

This package is auto-updated.

Last update: 2024-08-27 09:19:51 UTC


README

pipeline status coverage report

一个用于驱动VirtualBox的PHP库。API允许你执行诸如

$vbox = new VBox($username, $password);

// a single .ova may contain multiple machines
$vms = $vbox->import("/path/to/image.ova");
$vm = $vms[0];

$vm->setMemorySize(512); // MB
$vm->setCPUCount(2);

$adapter = $vm->getNetworkAdapter(0);
$adapter->setAttachmentType(NetworkAdapter::ATTACHEMENT_BRIDGED);
$adapter->setBridgedInterface("eno1");

$vm->up();

实际上,这个库是VirtualBox SOAP Web服务的包装器。你可以在文档目录中找到完整的SOAP Web服务文档。

安装

最好使用composer安装库本身

composer require cylab-be/php-vbox-api

VirtualBox Web服务

当然,你必须下载并安装VirtualBox

在VirtualBox中,每个虚拟机都是一个单独的用户进程。因此,通常最好为运行你的虚拟机创建一个专门的用户

sudo adduser vbox

然后,将这个新用户添加到vbox组中,以便允许运行虚拟机

sudo adduser vbox vbox

最后,你必须激活VirtualBox Web服务。

因此,你必须创建文件/etc/default/virtualbox,并指定哪个用户应该用于运行你的机器

VBOXWEB_USER=vbox

现在你可以启动VirtualBox Web服务

sudo service vboxweb-service restart

用法

连接到VirtualBox

$vbox = new VBox("vbox", "passord-of-vbox-user");

列出所有机器

$vms = $vbox->allVMs();
foreach ($vms as $vm) {
  echo $vm->getName() . "\n";
  echo $vm->getUUID() . "\n";
}

修改虚拟机

$vm = $vbox->findVM("name or UUID");

// do a clean shutdown
$vm->halt();
$vm->setMemory(2048);
$vm->setCPUCount(4);
$vm->up();

// do a hard shutdown
$vm->kill();

// destroy the VM
$vm->destroy();

截图

$vm->up();
sleep(5);
$img = $vm->takeScreenshot();
file_put_contents('/path/to/screenshot.png', $img);