说明:

  刚开始一脸懵逼,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. FactoryBean的实现原理与作用

    FactoryBean与BeanFactory: 这俩货在拼写上很是相似,很多同学在看IOC源码或者其他地方并不能分清有啥区别,前面的IOC源码中我简单说过,现在统一简单来讲一下: FactoryBe ...

  2. LeetCode18.四数之和 JavaScript

    给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满 ...

  3. Android 中Dialog的使用

    本文是参考ProAndroid的第10章Working with Dialogs的内容,在合适的地方添加了作者自己的一些见解最终成文. Android 中的对话框是一个展示在当前窗口上的小一号的窗口, ...

  4. 什么是 better-scroll(转自知乎网 : 黄轶)

    什么是 better-scroll better-scroll 是一个移动端滚动的解决方案,它是基于 iscroll 的重写,它和 iscroll 的主要区别在这里.better-scroll 也很强 ...

  5. 『C++』Temp_2018_12_26_02

    #include <iostream> #include <string> #include <stdio.h> #include <stdlib.h> ...

  6. Folyd + 路径存储

    一.Folyd 算法原理 如果 AB + AC < BC 那么, BC最短路就要经过 A. 在算法进行过程中,应该是 ,B-A 有很多路径,B 代表这些路径权值之和,A-C也有很多路径,C是这些 ...

  7. FreeImage 生成带透明通道的GIF

    主要方法: 加载图像及读取参数 FreeImage_Load FreeImage_GetWidth FreeImage_GetHeight FreeImage_Allocate FreeImage_G ...

  8. 删除文件的第一列 -Linux

    删除文件 text中第一列 方式一 awk '{$1="";print $0}' text 方式二 sed -e 's/[^ ]* //' text

  9. Linux3.5—IIC学习分析

    I2C控制器的设备对象内核已经实现并关联到platform总线. I2C控制器的驱动对象内核已经实现. 看mach-tiny4412.h /plat-samsung/目录下 /drivers/i2c/ ...

  10. SaltStack error: No module named 'salt'

    启动saltstack的时候出现下面的错误 问题原因 是因为我在centos7中安装了多版本的python导致的 解决方案 将文件下面文件首行更改成python2 [root@saltstack-12 ...