cylab-be/ php-vbox-api
一个用于驱动VirtualBox的PHP库
1.7.5
2023-02-23 12:35 UTC
Requires
- ext-soap: *
Requires (Dev)
- insolita/unused-scanner: ^2.1
- phpseclib/phpseclib: ^2.0
- phpstan/phpstan: ^1.8
- phpunit/phpunit: ^8.2
- slevomat/coding-standard: ^6.0
- squizlabs/php_codesniffer: ^3.5
- vlucas/phpdotenv: ^3.3
README
一个用于驱动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);