假设我有 VMWARE 工作站(来宾 Windows 并由 Windows 托管)。有没有可能的方法来接收主机的主机名?并且无需像此链接中那样更改主机上的内容。
7 回答
我通过 machine.id 将字符串从主机传递给来宾来做到这一点。它确实需要在主机上进行更改(也在每个 VM 的 .vmx 文件中),并且它不会自动发现主机的主机名,但它可以工作。在主机上,关闭相关 VM 的电源,编辑 VM 的 .vmx 文件。查找或添加如下所示的行:
machine.id = "<string>"
设置<string>
等于某个标识字符串,它将告诉您服务器的名称。这可以是主机名,也可以是它的缩短版本,或者如果您愿意,甚至可以是一些难以理解的代码,只要您知道它的含义。但是,如果 .vmx 文件有一行设置
isolation.tools.machine.id.get.disable = TRUE
传递字符串不起作用,因此如果存在此行,您可能需要删除/注释它或将值设置为FALSE
.
在来宾操作系统上,如果您安装了 VMware Tools,则可以执行以下操作(对于 Linux 来宾):
vmware-guestd --cmd 'machine.id.get'
或(对于 Windows 客人,我没有尝试过):
VMwareService --cmd machine.id.get
我知道这是一个旧线程,但是如果有人仍然对“thomas lee”的回答感兴趣,上面的答案适用于VMWare 工作站和VMWare fusion的最新版本。检索值的新命令是
rpctool machine.id.get
在为 Fusion 部署托管 VM 时使用它,以便在首次启动时自动设置机器名称。谢谢托马斯……
如果您能够在客户机操作系统上安装PowerCLI ,则可以通过查找运行脚本的 VM 来访问一些 ESX 主机信息:
Connect-VIServer -Server <myvcenterserver>
$myVM = Get-VM -Name $(dir env:COMPUTERNAME).Value
$myVM.Host.Name
注意:这假设您的来宾与 vCenter 中的 VM 名称具有相同的主机名。
对于 Linux 来宾(OP 声明为 Windows),我使用pyVmomi Python 模块执行类似的查找。
原则上 - 不。
但是,可能存在(或将存在)某些允许恶意客户操作系统绕过 VM 沙箱的漏洞。例如,阅读Blue Pill。您还可以在研究人员自己的博客Invisible Things by Joanna Rutkowska上阅读更多详细信息。
当然,这些只是概念证明,但在软件中实现的任何安全性都会受到软件错误的影响......
我认为可能有很多方法可以做到这一点,并且可以想到两种方法:一种是在客户机中安装 ViX,连接到主机而不指定主机名,(谷歌“ViX 参考”然后看到“常见任务”)然后用于Vix_CopyFileFromHostToGuest()
复制文件/etc/vmware/esx.conf
。另一种方法是创建从访客到主机的某种网络连接(我使用过ssh
,但如果您不知道主机名或 IP,您仍然可以像上面那样进行 ViX 连接并调度需要一段时间的工作)和然后netstat -a
在客人说。输出将netstat
包含主机名,如果它是可解析的。
您实际上在网络上有两台计算机。如果您为虚拟 NIC 使用专用网络/NAT 样式设置之一,则主机具有相当可预测的 IP 地址,因此您可以使用许多远程管理方法中的任何一种来询问它,就像您使用其他任何方法一样.
如果只有一个来宾操作系统,那么只需尝试使用与来宾 IP 地址相同的前 24 位的每个 IP 地址,就可以避免猜测地址。
在 vSphere 中
- 点击你的主机
- 单击配置选项卡
- 在软件部分单击 DNS 和路由