在上篇文章中,我们用winform结合vmware的api做了一个demo,在vmrc sdk中作为plugin单独打包出来vmware-vmrc-win32-x86.exe,上篇文章的demo只能基于这个plugin运行,在主机的vcenter中默认带有此功能,所以想要以activex插件的形式运行于浏览器之上,就必须安装此插件包,约35MB。此插件集成了包含了可运行于IE之上的ActiveX,以及可运行于Chrome上的应用插件(FF等其他浏览器这里没有经过测试)。下面为一张截图,分别测试于IE11和Chrome。

我们先创建console的基本类。

 public class ConsoleModel
{
public int Modes { get; set; }
public int MsgMode { get; set; }
public string AdvancedConfig { get; set; }
public string Host { get; set; }
public string Thumb { get; set; }
public bool AllowSSLErrors { get; set; }
public string Ticket { get; set; }
public string User { get; set; }
public string Pass { get; set; }
public string VMId { get; set; }
public string Datacenter { get; set; }
public string VMPath { get; set; }
}

下面是基于mvc用于和javascript交互的方法,最后返回一条json数据。

 public ActionResult Connect(string vmName)
{
string[] arguments = {
"--url", "https://192.168.0.161/sdk",
"--username", "root",
"--password", "P@ssw0rd",
"--disablesso", "true",
"--ignorecert", "true"}; util = AppUtil.AppUtil.initialize("Connect", constructOptions(), arguments);
util.connect();
ManagedObjectReference mor = util.getConnection().ServiceRef;
ManagedObjectReference sessionMor = util._connection.Service.RetrieveServiceContent(mor).sessionManager;
string ticket = util._connection.Service.AcquireCloneTicket(sessionMor);
ManagedObjectReference vmMor = util.getServiceUtil().GetDecendentMoRef(null, "VirtualMachine", vmName); ConsoleModel console = new ConsoleModel();
console.Modes = ;
console.MsgMode = ;
console.AdvancedConfig = "NaN";
console.Host = "192.168.0.161";
console.Thumb = "";
console.AllowSSLErrors = true;
console.Ticket = ticket;
console.User = "";
console.Pass = "";
console.VMId = vmMor.Value;
console.Datacenter = "";
console.VMPath = ""; return Json(console, JsonRequestBehavior.AllowGet);
}

下面是基于jquery的ajax调用上方web方法。

 function vmrc_connect() {
$.ajax({
type: 'POST',
url: 'Home/Connect',
data: 'vmName=test',
dataType: 'json',
success: function (data) {
startup(data.Modes, data.MsgMode, data.AdvancedConfig);
connect(data.Host, data.Thumb, data.AllowSSLErrors, data.Ticket, data.User, data.Pass,
data.VMId, data.Datacenter, data.VMPath);
},
error: function () {
alert('connect failed');
}
});
}

下方是sdk中提供的调用插件的demo,这里已经作了部分修改。

 function startup(modes, msgMode, advancedConfig) {
log('starting VMRC instance: modes: ' + modes + ', messages: ' + msgMode); if (advancedConfig) {
log('VMRC using advanced config "' + advancedConfig + '"');
} try {
var ret = vmrc.startup(modes, msgMode, advancedConfig);
log('startup returned "' + ret + '"');
} catch (err) {
alert('startup call failed: ' + err);
}
} function connect(host, thumb, allowSSLErrors, ticket, user, pass, vmid, datacenter, vmPath) {
if (thumb.length > 0)
thumb = thumb.replace(/-/g, ':'); try {
var ret = vmrc.connect(host, thumb, allowSSLErrors,
ticket, user, pass, vmid, datacenter, vmPath);
log('connect succeeded');
} catch (err) {
alert('connect failed: ' + err);
}
}

小结:在sdk demo中,为了兼容各种浏览器,可能要修改部分js方法。

vmware之VMware Remote Console (VMRC) SDK(二)的更多相关文章

  1. vmware之VMware Remote Console (VMRC) SDK(一)

    通过console可以实现类似远程桌面的功能,但它的实现方式和远程桌面不同,一般来说远程桌面必须要有网络支持,在机器关闭或者启动过程中无法连接.而console是通过esx的虚拟化组件实现远程桌面.在 ...

  2. vmware之VMware Remote Console (VMRC) SDK(三)

    前两节我们介绍了vmrc sdk的基本用法.在前面的demo中,有一个关键的问题是,我们现在所作的工作都是基于局域网的,作为应用层面上,主机不会直接暴露给用户,而是通过一系列的web service服 ...

  3. VMware实现控制台功能(VMware Remote Console)

    说明: 刚开始一脸懵逼,google了一些资料,发现基本没有能快速落地的,自己做完后梳理了一下发上来供大家参考. 如果帮到你了,请点赞评论关注,以资鼓励,多谢~ 实现VMware控制台功能主要有两种方 ...

  4. VMware vSphere Client5.0与 Windows8不再有问题,解决VMware 5.0 客户端提示VMRC控制台的连接已断开

    问题:VMware 5.0 客户端提示VMRC控制台的连接已断开...正在尝试重新连接,系统是win8的 网上解决办法: WIN8,在安装vmware vsphere client 5.0时出现兼容性 ...

  5. 通过IMM With Remote Console为服务器安装操作系统

    现有IBM System x3750 M4(8722A1C)配置   产品类别 机架式 产品结构 2U CPU类型 Intel 至强E5-4600 CPU型号 Xeon E5-4640 CPU频率 2 ...

  6. VMware workstation创建虚拟机console

    1. 使用VMware workstation创建虚拟机硬件2. 安装操作系统3. 操作系统安装过程 1. 使用VMware workstation创建虚拟机硬件 使用VMware workstati ...

  7. VMware workstation创建虚拟机console图文

    1. 概述2. 配置入口3. 新建虚拟机向导3.1 类型配置3.2 硬件兼容性3.3 操作系统安装3.4 客户机操作系统类型3.5 客户机的名称位置4. 客户机硬件配置选择4.1 客户机处理器配置4. ...

  8. vmware开发包之vSphere Management SDK

    vSphere Management SDK关于vmware管理等相关功能的.net和java的代码示例. 在其5.5的解压包中 eam:esx agent management表示esx虚机生产环境 ...

  9. VMware vCenter重置web console SSO登录密码

    On a Windows Platform Services Controller or vCenter Server with Embedded Platform Services Controll ...

随机推荐

  1. Set8087CW

    Set8087CWThis example accesses the Floating Point Unit (FPU) control register. Try turning floating ...

  2. StringUtils的isNotEmpty和isNotBlank

    StringUtils中一共有130多个方法,并且都是static的,所以我们可以这样调用StringUtils.xxx():今天笔者记录下常用的isNotEmpty和isNotBlank:这两个都是 ...

  3. 如何理解dart的mixin

    mixin翻译出来就是混入的意思 混入,就是一个类可以使用另一个类里的功能比如方法或者属性,其实这个功能并不陌生 ,有点类似c#里的扩展方法,但是并不同于, mixin和implements有着本质的 ...

  4. MyBatis 学习记录5 MyBatis的二级缓存

    主题 之前学习了一下MyBatis的一级缓存,主要涉及到BaseExecutor这个类. 现在准备学习记录下MyBatis二级缓存. 配置二级缓存与初始化发生的事情 首先二级缓存默认是不开启的,需要自 ...

  5. npm安装elasticsearch-reindex

    由于新版的nodejs已经集成了npm,所以之前npm也一并安装好了.同样可以通过输入 "npm -v" 来测试是否成功安装. npm -v 你可以使用以下命令来查看所有全局安装的 ...

  6. sqlserver里常用的语法

    bb 为nvarchar(50)CAST(bb AS int) select MAX(CAST(bb AS int)) from AAA

  7. 前端开发之JavaScript基础篇二

    主要内容: 1.流程控制条件语句和switch语句 2.for循环和while循环 3.Break语句和Continue语句 4.数组和数组常用方法 5.函数 6.对象 一.流程控制条件语句和swit ...

  8. HashMap、HashTable的区别

    HashMap和HashTable都实现了Map接口,但是要用哪个要分清它们之间的区别. 它们的主要区别:线程安全性.速度 HashMap几乎可以等价于HashTable除了HashMap是非sync ...

  9. Fedora下安装Scrapy遇到的两个问题

    error:/usr/lib/rpm/redhat/redhat-hardened-cc1: No such file or directory 需要安装redhat-rpm-config sudo ...

  10. Kafka集群中 topic数据的分区 迁移到其他broker

    前言 kafka集群扩容后,新的broker上面不会数据进入这些节点,也就是说,这些节点是空闲的:它只有在创建新的topic时才会参与工作.除非将已有的partition迁移到新的服务器上面:所以需要 ...