php管理虚拟机,通过代理连接

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

php管理虚拟机,通过代理连接的相关文章

KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机

一.KVM简介 KVM(名称来自英语:Kernel-basedVirtual Machine的缩写,即基于内核的虚拟机),是一种用于Linux内核中的虚拟化基础设施,可以将Linux内核转化为一个hypervisor.KVM在2007年2月被导入Linux 2.6.20核心中,以可加载核心模块的方式被移植到FreeBSD及illumos上. KVM在具备Intel VT或AMD-V功能的x86平台上运行.它也被移植到S/390,PowerPC与IA-64平台上.在Linux内核3.9版中,加入A

解决Azure虚拟机远程桌面连接不上的问题

问题描述:在Azure中的两台虚拟机,远程连接不上,但是同一Azure内网的其他虚拟机ping这两台虚拟机都正常. 该问题出现在我远程连接进这两台虚拟机后,修改了虚拟机网卡属性中的DNS配置.第一台修改后,就端开连接了.当时以为是网络断了,检查本机的网络并没有异常,但是该台虚拟机已经无法通过远程桌面连接.于是我连接了第二台,在修改DNS配置后出现了同意的问题.后查阅相关资源,得知Azure虚拟机的DNS是不能在系统里面去配置的,需要通过Azure的portal去修改. 登录Azure管理界面,点

使用 Virtual Machine Manager 管理虚拟机

转载自https://www.ibm.com/developerworks/cn/cloud/library/cl-managingvms/ 尽管服务器管理在过去问题重重,但虚拟化管理简化了一些问题,却放大了另一些问题.一个服务器上的单一操作系统的时代已成过去,并由多个位于各自的虚拟机 (VM) 容器中的操作系统所取代.此属性(称为虚拟机密度)很有用,因为随着越来越多的虚拟机占用了更少数量的服务器,所需要的服务器硬件更少了.这带来了更少的硬件.更低的功耗,但却增加了管理复杂性. 所幸,已有解决方

kvm命令管理虚拟机

virsh 既有命令行模式,也有交互模式,在命令行直接输入 virsh 就进入交互模式, virsh 后面跟命令参数,则是命令行模式:查网桥命令[[email protected] ~]# brctl showbridge name bridge id STP enabled interfacesbr0 8000.000c295c6c9e no ens33virbr0 8000.52540005d291 yes virbr0-nic (1)基础操作 --- 命令行下管理虚拟机语法结构:virsh

虚拟机中MySQL连接问题:Lost connection to MySQL server at 'reading initial communication packet, system error: 0 以及 host is not allowed to connect mysql

环境:在VirtualBox中安装了Ubuntu虚拟机,网络使用了NAT模式,开启了端口转发. 局域网内其他计算机访问虚拟机中的MySQL Server出现两个问题: Lost connection to MySQL server at 'reading initial communication packet, system error: 0 以及 host is not allowed to connect mysql 1.解决Lost connection to MySQL server

使用virt-manager创建和管理虚拟机

1.虚拟机管理程序和虚拟机管理 一个服务器上只安装单一操作系统的时代已经过去,单个服务器可通过安装多个虚拟机来运行不同操作系统.虚拟机的大量使用减少了所需的服务其硬件,降低了服务器的功耗,但却带来了另外一个问题,多虚拟机数目的增加使其管理变得更加复杂. 虚拟化为管理虚拟机及其资源以及物理主机的基础资源带来了新的挑战.多个操作系统现在以虚拟机的形式共享一个物理主机的资源,操作系统与物理主机之间不再存在一对一的映射关系.每个虚拟机使用一个容器和其他元数据来表示,该容器持有一个或多个虚拟磁盘,而这些元

virsh命令管理虚拟机

virsh命令管理虚拟机 libvirt有两种控制方式,命令行和图形界面. 1.图形界面:通过执行名virt-manager,启动libvirt的图形界面,在图形界面下可以一步一步的创建虚拟机,管理虚拟机,还可以直接控制虚拟机的桌面. 2.命令行就是接下来我所说的.如何通过命令行来控制虚拟机. 创建虚拟机 在/etc/libvirt/qemu下新建xml文件,如node.xml.需要有内存.cpu.硬盘设置.光驱以及vnc等等.以下是我根据Openstack启的虚机修改而成,没办法,直接用Ope

boost::asio 连接管理11 如何关闭连接

在实际产品运行中,对连接管理有了更新的认识,这里分享一下. shared_ptr管理连接对象的生命周期 shared_ptr的引用计数器决定了连接对象的生命周期.这里我说的连接对象就是在我的前文:http://blog.csdn.net/csfreebird/article/details/8522620 中的Client对象: [cpp] view plaincopyprint? #include "core/connection.h" #include <vector>

bat管理mstsc 远程桌面连接

批量添加用户 @echo off set "用户名文件=a.txt" set "用户组名称=administrators" ::文件路径可以有空格,但是不需要额外加"引号 for /f "usebackq tokens=1-3" %%a in ("%用户名文件%") do ( net user %%a %%b /add /PASSWORDCHG:%%c net LOCALGROUP %用户组名称% %%a  /add

SSH通过代理连接

从目前网上的资料来看,通过代理来连接ssh有2种方式: 一种是用Corkscrew实现http代理隧道连接,corkscrew官方主页: 另外一种是利用connect能实现Sock5和http代理隧道连接,connect官方主页(connect项目现已撤出,详细介绍请看:点这里). 先来介绍一下Corkscrew: 1.解压并编译安装: wget http://www.agroman.net/corkscrew/corkscrew-2.0.tar.gztar -xzvf corkscrew-2.