VMware实现控制台功能(VMware Remote Console)
说明:
刚开始一脸懵逼,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)的更多相关文章
- 通过IMM With Remote Console为服务器安装操作系统
现有IBM System x3750 M4(8722A1C)配置 产品类别 机架式 产品结构 2U CPU类型 Intel 至强E5-4600 CPU型号 Xeon E5-4640 CPU频率 2 ...
- VMware vsphere Hypervisor、VMware vsphere和VMware Workstation小记
VMware Workstation软件需要依赖于宿主操作系统之上. VMware vSphere是VMware公司推出一套服务器虚拟化解决方案,它是可以直接独立安装和运行在祼机上的系统. VMwar ...
- VMware 虚拟化编程(13) — VMware 虚拟机的备份方案设计
目录 目录 前文列表 备份思路 备份算法 备份细节 连接到 vCenter 还是 ESXi 如何选择快照类型 是否开启 CBT 如何获取备份数据 如何提高备份数据的传输率 备份厚置备磁盘和精简置备磁盘 ...
- VMware 虚拟化编程(10) — VMware 数据块修改跟踪技术 CBT
目录 目录 前文列表 数据块修改跟踪技术 CBT 为虚拟机开启 CBT CBT 修改数据块偏移量获取函数 QueryChangedDiskAreas changeId 一个 QueryChangedD ...
- VMware 虚拟化编程(9) — VMware 虚拟机的快照
目录 目录 前文列表 VMware 虚拟机的快照 快照的执行过程 删除快照 快照类型 Quiseced Snapshot 前文列表 VMware 虚拟化编程(1) - VMDK/VDDK/VixDis ...
- 如何让VMware低版本运行VMware高版本创建的虚拟机
如何让VMware低版本运行VMware高版本创建的虚拟机 问题描述: 本机安装的VMware Workstation是10版本,之前VMware Workstation 11版本创建的虚拟机,在运行 ...
- Hadoop生态圈-Ambari控制台功能简介
Hadoop生态圈-Ambari控制台功能简介 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在经历一系列安装过程之后(部署过HDP后我终于发现为什么大家喜欢用它了,部署比CDH简 ...
- 关于卸载vmware后如何删除VMware Network Adapter VMnet1虚拟网卡
默认情况下.我们在windows下安装了vmware虚拟机后,都会产生VMware Network Adapter VMnet1虚拟网卡 对于vmware虚拟网卡的管理,我们可以在vmware虚拟机软 ...
- VMware 虚拟化编程(15) — VMware 虚拟机的恢复方案设计
目录 目录 前文列表 将已存在的虚拟机恢复到指定时间点 恢复为新建虚拟机 灾难恢复 恢复细节 恢复增量备份数据 以 RDM 的方式创建虚拟磁盘 创建虚拟机 Sample of VirtualMachi ...
随机推荐
- ios Block详细用法
ios Block详细用法 ios4.0系统已开始支持block,在编程过程中,blocks被Obj-C看成是对象,它封装了一段代码,这段代码可以在任何时候执行.Blocks可以作为函数参数或者函数的 ...
- ARM v7-A 系列CPU的MMU隐射分析
ARM v7-A 系列CPU的MMU隐射分析 摘要:ARM v7-A系列的CPU加入了很多扩展,如多核处理器扩展.大物理地址扩展.TrustZone扩展.虚拟化扩展.若支持大的物理地址,则必须支持多核 ...
- careercup-扩展性和存储限制10.3
题目 给你一个文件,里面包含40亿个整数,写一个算法找出该文件中不包含的一个整数, 假设你有1GB内存可用. 如果你只有10MB的内存呢? 解答 我们先来做个算术题,40亿个整数大概有多大? * ^ ...
- Oracle创建表、修改表、删除表、约束条件语法
一. 使用create关键字创建表 --(1)创建新表use 数据库(在那个数据库中建表)create table 表名(字段名1(列名) 数据类型 列的特征,字段名2(列名) 数据类型 列的特征(N ...
- Swift_枚举
Swift_枚举 点击查看源码 空枚举 //空枚举 enum SomeEnumeration { // enumeration definition goes here } 枚举基本类型 //枚举基本 ...
- vue项目出现空格警告的原因及其解决办法
原因: 因为你的Webpack 配置中大概是使用了 eslint-loader,这是用来规范代码风格的,在多人协作或大项目中推荐使用,不想要则可以在 webpack.config.js 中去掉.esl ...
- C#程序员快速上手Angular开发
由vue的技术栈快速切换到Angular,对于C#开发人员来说应该不难,二期是一个比较平滑的过渡.所以最近 记录下切换到Angular框架的一些过程,因为NG天然支持Typescript,特别是当项目 ...
- [STM32F4][关于看门狗的那些事]
STM32(stm32f4XX系列)看门狗的总结: 1. 具有两个看门狗外设(独立和窗口)均可用于检测并解决由软件错误导致的故障:当计数器达到给定的超时值时,触发一个中断(仅适用于窗口看门狗)或产生一 ...
- 实验吧web加了料的报错注入
知识点: SQL注入中用到的Concat函数详解 http://www.sohu.com/a/219966085_689961 http分割注入 直接根据提示,提交post请求的用户名和密码 结 ...
- PTA基础编程题目集7-4 BCD解密
BCD数是用一个字节来表达两位十进制的数,每四个比特表示一位.所以如果一个BCD数的十六进制是0x12,它表达的就是十进制的12.但是小明没学过BCD,把所有的BCD数都当作二进制数转换成十进制输出了 ...