php管理虚拟机,通过代理连接
1、 进入安装目录
成都创新互联主要从事成都网站建设、网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务阳曲,十年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220
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');
classVbox_oper
{
protected$serverIp;
protected$serverPort="18083";
protected$proxy_uname;
protected$proxy_password;
protected$proxy_host;
protected$proxy_port;
protected$item;
protected$connection;
/*
* 模块名称:得到连接
* 参数说明:
* 作者:csl
*/
public functiongetConn()
{
$url="http://".$this->serverIp.":".$this->serverPort."/";
//$this->connection = new SoapClient("vboxwebService.wsdl", array('location' => $url, 'connection_timeout' => 5,));
$this->connection=newSoapClient("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 functioninit_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 functioninit_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 functionstart()
{
$this->getConn();
$websessionManager=newIWebsessionManager($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 functionstop()
{
$this->getConn();
$websessionManager=newIWebsessionManager($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=newLockType($session,'Shared');
$machine->lockMachine($session,$lockType->NameMap[1]);
$iconsole=$session->getConsole();
$progress=$iconsole->powerDown();
}
}
/*
* 模块名称:重启虚拟机
* 参数说明:
* 作者:csl
*/
public functionrestart()
{
$this->getConn();
$websessionManager=newIWebsessionManager($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=newLockType($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 functionget_machines(){
$this->getConn();
$websessionManager=newIWebsessionManager($this->connection);
$virtualbox=$websessionManager->logon("","");
$machines=$virtualbox->machines;
return$machines;
}
}
附件:http://down.51cto.com/data/2366921
文章名称:php管理虚拟机,通过代理连接
路径分享:http://azwzsj.com/article/pjpchc.html