说明:

  刚开始一脸懵逼,google了一些资料,发现基本没有能快速落地的,自己做完后梳理了一下发上来供大家参考。

  如果帮到你了,请点赞评论关注,以资鼓励,多谢~

  实现VMware控制台功能主要有两种方式,第一种是直接在Web页面打开,第二种是使用VMware Remote Console官方工具打开控制台;

  第一种用户体验更好,第二种开发起来更加方便快捷。由于项目时间原因,暂选择第二种,后期迭代使用第一种方式。。。

简述:

  1、从vClient获取一个VMRC协议的链接格式如下:

      vmrc://  clone:[VC-TICKET]  @  [VC]  /?  moid=[VM-MOREF-ID]

      主要有几块:VMRC协议标识、ticket、vClient地址、指定vm的morId。

  2、通过vClient clone Session,调用acquireCloneTicket() 获取ticket,该ticket可在原Session失效后继续使用;

  3、获取vClient地址;

  4、获取指定vm的ManageredObjectReference,即morId;

  5、VMware Remote Console在安装时会向系统注册,浏览器通过URL自动解析,调用该工具,将2-4步中获取的三个参数传入VMware Remote Console从而实现控制台登录。

代码如下;

  

 public class ConsoleHandler {
private static Logger logger = LoggerFactory.getLogger(ConsoleHandler.class); public String buildVMRCUrl(String vmName) {
StringBuilder sb = new StringBuilder();
String VMRC = "vmrc://clone:"; ServiceInstance serviceInstance = null;
try {
serviceInstance = CommonUtils.createServiceInstance();
} catch (MalformedURLException | RemoteException e) {
logger.error("createServiceInstance error.", e);
}
String ticket = getTicket(serviceInstance);
String vcHost = CommonUtils.getVcHost();
String moid = getMoid(vmName, serviceInstance);
return sb.append(VMRC).append(ticket).append("@").append(vcHost).append("/?moid=").append(moid).toString();
} private String getTicket(ServiceInstance serviceInstance) {
String ticket = null;
try {
ticket = serviceInstance.getSessionManager().acquireCloneTicket();
} catch (RemoteException e) {
logger.error("acquireCloneTicket error", e);
}
return ticket;
} private String getMoid(String vmName, ServiceInstance si) {
VirtualMachine vm;
String moid = null;
try {
vm = (VirtualMachine) new InventoryNavigator(si.getRootFolder()).searchManagedEntity("VirtualMachine",
vmName);
moid = vm.getMOR().getVal();
} catch (RemoteException e) {
e.printStackTrace();
}
return moid;
}
}

获取ServiceInstance、ticket ( acquireCloneTicket() )的方法见之前的文章,再次推荐该SDK,棒棒哒~~~

https://www.cnblogs.com/AzkbanHan/p/10024397.html

VMware实现控制台功能(VMware Remote Console)的更多相关文章

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

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

  2. VMware vsphere Hypervisor、VMware vsphere和VMware Workstation小记

    VMware Workstation软件需要依赖于宿主操作系统之上. VMware vSphere是VMware公司推出一套服务器虚拟化解决方案,它是可以直接独立安装和运行在祼机上的系统. VMwar ...

  3. VMware 虚拟化编程(13) — VMware 虚拟机的备份方案设计

    目录 目录 前文列表 备份思路 备份算法 备份细节 连接到 vCenter 还是 ESXi 如何选择快照类型 是否开启 CBT 如何获取备份数据 如何提高备份数据的传输率 备份厚置备磁盘和精简置备磁盘 ...

  4. VMware 虚拟化编程(10) — VMware 数据块修改跟踪技术 CBT

    目录 目录 前文列表 数据块修改跟踪技术 CBT 为虚拟机开启 CBT CBT 修改数据块偏移量获取函数 QueryChangedDiskAreas changeId 一个 QueryChangedD ...

  5. VMware 虚拟化编程(9) — VMware 虚拟机的快照

    目录 目录 前文列表 VMware 虚拟机的快照 快照的执行过程 删除快照 快照类型 Quiseced Snapshot 前文列表 VMware 虚拟化编程(1) - VMDK/VDDK/VixDis ...

  6. 如何让VMware低版本运行VMware高版本创建的虚拟机

    如何让VMware低版本运行VMware高版本创建的虚拟机 问题描述: 本机安装的VMware Workstation是10版本,之前VMware Workstation 11版本创建的虚拟机,在运行 ...

  7. Hadoop生态圈-Ambari控制台功能简介

    Hadoop生态圈-Ambari控制台功能简介 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在经历一系列安装过程之后(部署过HDP后我终于发现为什么大家喜欢用它了,部署比CDH简 ...

  8. 关于卸载vmware后如何删除VMware Network Adapter VMnet1虚拟网卡

    默认情况下.我们在windows下安装了vmware虚拟机后,都会产生VMware Network Adapter VMnet1虚拟网卡 对于vmware虚拟网卡的管理,我们可以在vmware虚拟机软 ...

  9. VMware 虚拟化编程(15) — VMware 虚拟机的恢复方案设计

    目录 目录 前文列表 将已存在的虚拟机恢复到指定时间点 恢复为新建虚拟机 灾难恢复 恢复细节 恢复增量备份数据 以 RDM 的方式创建虚拟磁盘 创建虚拟机 Sample of VirtualMachi ...

随机推荐

  1. python爬取斗鱼B总直播弹幕

    在某群中看到关于弹幕爬取的需求,又因为斗鱼比较OP,就以这个作为切入点. 如果你想了解如何获取弹幕,我的这个例子就可以让你豁然开朗,对于哪些没有开发弹幕的直播或视频平台,就需要用抓包工具获取请求,然后 ...

  2. 由Oracle 11g SYSAUX 和 SYSTEM 表空间回收引发的联想

    0x00--目的 整理一下以前一个SYSTEM表空间和SYSAUX表空间使用率达到99%上限的处理思路和相关知识点,好记性不如烂笔头 0x01--表空间使用率现状 通过查询可得知目前表空间使用情况如下 ...

  3. js常用共同方法

    var uh_rdsp = (function(){ //获取根目录 var getContextPath = function(){ var pathName = document.location ...

  4. 破损的键盘(悲剧文本)(Broken Keyboard(a.k.a. Beiju Text),Uva 11988)

    破损的键盘(悲剧文本)(Broken Keyboard(a.k.a. Beiju Text),Uva 11988) 题意描述 你在输入文章的时候,键盘上的Home键和End键出了问题,会不定时的按下. ...

  5. eclipse中误删tomcat后,文件都报错,恢复server时无法选择tomcat7.0解决办法

    创建Tomcat v7.0 Server 不能进行下一步. 解决方法: 1.退出 eclipse 2.到[工程目录下]/.metadata/.plugins/org.eclipse.core.runt ...

  6. 面试题——Java虚拟机

    一.运行时数据区域 Java虚拟机在执行Java程序的时候会把它所管理的内存划分为若干个不同的数据区域,这些区域各有用途: 程序计数器:(线程私有的) 程序计数器是一块较小的内存,可以看作是当前线程所 ...

  7. mysql索引建立原则

    看了网上一些网上关于创建索引的原则,在这里做一下总结: 1.尽量创建在使用频率较高的字段上,比如主键,外键,where总用到的字段,join是相关联的字段 2.如果表过大,一定要创建索引. 3.索引应 ...

  8. python -- 简单配置发送邮件功能

    本文用第三方类库:yagmail 实现:以QQ邮箱作为发送邮箱为例.最终的实现效果:给指定邮箱,发送指定内容的邮件. 准备工作 1.用于发送邮件的账号信息 比如账号用自己的qq邮箱,但'密码'需要在邮 ...

  9. [转]Visual C++ 和 C++ 有什么区别?

    注:本篇内容转载与网络,方便自己学习,如有侵权请您联系我删除,谢谢. 有位同学问我“Visual C++和C++有什么区别?”,这的确是初学者会感到困惑的问题,比较常见.除此之外,还有“先学C++好, ...

  10. 网站漏洞检测之WordPress 5.0.0 系统修复方案

    2019年正月刚开始,WordPress最新版本存在远程代码注入获取SHELL漏洞,该网站漏洞影响的版本是wordpress5.0.0,漏洞的产生是因为image模块导致的,因为代码里可以进行获取目录 ...