1、 进入安装目录
Cd C:\Program Files\Oracle\VirtualBox
设置web认证库为null:
VboxManagesetproperty websrvauthlibrary null
然后开启服务
vboxwebsrv --host 0.0.0.0
2、在浏览器输入http://127.0.0.1:18083
在博客下方附件,提供vbox接口文件
写代码实现时,vbox_oper操作帮助类
include_once(‘vboxServiceWrappers.php‘);
class Vbox_oper{ protected $serverIp; protected $serverPort = "18083"; protected $proxy_uname; protected $proxy_password; protected $proxy_host; protected $proxy_port; protected $item; protected $connection; /* * 模块名称:得到连接 * 参数说明: * 作者:csl */ public function getConn() { $url = "http://" . $this->serverIp . ":" . $this->serverPort . "/"; //$this->connection = new SoapClient("vboxwebService.wsdl", array(‘location‘ => $url, ‘connection_timeout‘ => 5,)); $this->connection = new SoapClient("vboxwebService.wsdl", array(‘location‘ => $url,‘connection_timeout‘=>5, ‘proxy_host‘ => $this->proxy_host, ‘proxy_port‘ => $this->proxy_port, ‘proxy_login‘ => $this->proxy_uname, ‘proxy_password‘ => $this->proxy_password)); return $this->connection; } /* * 模块名称:初始化代理信息 * 参数说明: * init_proxy 包含:ip,port,username,password * 作者:csl */ public function init_proxy($proxy){ if(!empty($proxy[‘ip‘])) $this->proxy_host = $proxy[‘ip‘]; if(!empty($proxy[‘port‘])) $this->proxy_port = (int)$proxy[‘port‘]; if(!empty($proxy[‘username‘])) $this->proxy_uname = $proxy[‘username‘]; if(!empty($proxy[‘password‘])) $this->proxy_password = $proxy[‘password‘]; } /* * 模块名称:初始化服务器信息 * 参数说明: * init_proxy 包含:server_ip,sbmc * 作者:csl */ public function init_data($item, $proxy = array()) { $this->serverPort = "18083"; if(!empty($item[‘server_ip‘])) $this->serverIp = $item[‘server_ip‘]; if(!empty( $item[‘sbmc‘])) $this->name = $item[‘sbmc‘]; if (!empty($proxy)) { $this->init_proxy($proxy); } } /* * 模块名称:启动虚拟机 * 参数说明: * 作者:csl */ public function start() { $this->getConn(); $websessionManager = new IWebsessionManager($this->connection); $virtualbox = $websessionManager->logon("", ""); $machine = $virtualbox->findMachine($this->name); $session = $websessionManager->getSessionObject($virtualbox->handle); $state = (string)$machine->state; if ($state != ‘Running‘ && $state != ‘Paused‘) { $progress = $machine->launchVMProcess($session->handle, "headless", ""); } } /* * 模块名称:关闭虚拟机 * 参数说明: * 作者:csl */ public function stop() { $this->getConn(); $websessionManager = new IWebsessionManager($this->connection); $virtualbox = $websessionManager->logon("", ""); $machine = $virtualbox->findMachine($this->name); $session = $websessionManager->getSessionObject($virtualbox->handle); $state = (string)$machine->state; if ($state == ‘Running‘ || $state == ‘Paused‘) { $lockType = new LockType($session, ‘Shared‘); $machine->lockMachine($session, $lockType->NameMap[1]); $iconsole = $session->getConsole(); $progress = $iconsole->powerDown(); } } /* * 模块名称:重启虚拟机 * 参数说明: * 作者:csl */ public function restart() { $this->getConn(); $websessionManager = new IWebsessionManager($this->connection); $virtualbox = $websessionManager->logon("", ""); $machine = $virtualbox->findMachine($this->name); $session = $websessionManager->getSessionObject($virtualbox->handle); $state = (string)$machine->state; if ($state == ‘Running‘ || $state == ‘Paused‘) { $lockType = new LockType($session, ‘Shared‘); $machine->lockMachine($session, $lockType->NameMap[1]); $iconsole = $session->getConsole(); $progress = $iconsole->reset(); } else if ($state == ‘PoweredOff‘) { $progress = $machine->launchVMProcess($session->handle, "headless", ""); } } /* * 模块名称:获取vbox里面所有虚拟机 * 参数说明: * 作者:csl */ public function get_machines(){ $this->getConn(); $websessionManager = new IWebsessionManager($this->connection); $virtualbox = $websessionManager->logon("", ""); $machines = $virtualbox->machines; return $machines; }}
时间: 2024-10-11 07:02:55