在上篇文章中,我们用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. vue之vue-router跳转

    vue之vue-router跳转 一.配置 在初始化使用vue-cli的时候会有vue-router的安装选择,选择安装即可. 二.嵌套路由 一般情况下,登录和项目页面属于同级,所以App.vue 只 ...

  2. TBluetoothLE.OnDisconnectDevice

    自己作为广播方,连接我的设备断开收到的事件. TBluetoothLE.OnDisconnectDevice TBluetoothLEDevice BluetoothLE1->Discovere ...

  3. totoise svn误将桌面作为checkout路径,界面一堆?

    工作中由于错误操作,totoise svn检出文件时,直接选择检出路径为桌面,这样导致界面一大堆“?”:看起来比较烦,上网查找处理方案: 其中一个最简单的方法是: 第一步:新建txt文件: 第二步:输 ...

  4. Eclipse 常用插件地址大全

    安装方式: 使用Eclipse 的自动升级功能,菜单栏选[ Help ]→[ install new Software]  点击[Add]按钮,在“ Name ”中填入“ name (填写一个自己喜欢 ...

  5. UNITY Destroy()和DestroyImadiate()都不会立即释放对象内存

    如题,destroyimadiate是立即将物体从场景hierachy中移除,并标记为 "null",注意 是带引号的null.这是UNITY内部的一个处理技巧.关于这个技巧有很争 ...

  6. Zabbix 监控页面中文乱码

    问题描述: 如题,我相信大多数人都遇到过这个问题,Zabbix 监控图 中文乱码. 解决这个问题也很简单:( Zabbix 网页目录中缺少字体 ) 1.打开 Windows 的 C:\Windows\ ...

  7. 将本地Jar包安装到maven仓库中去

    开发中会遇到无法通过pom.xml下载jar包的情况,遇到这种情况我们可以手动在本地安装jar包到本地仓库中去,这样就可以下次再用到的话不用再次联网下载,具体以oracle的驱动包ojdbc6.jar ...

  8. 关于 jdbc 的错误

  9. 简单HttpClientUtils工具类

    package com.zy.utils; import org.apache.http.HttpEntity; import org.apache.http.HttpStatus; import o ...

  10. Android中的网络编程

    谷歌在Android6.0之后就废弃了使用HttpClinet进行网络连接.所以,这里需要重点学习的是通过HttpUrlConnect进行网络连接. String path="这里是你想要的 ...