7

假设我有 VMWARE 工作站(来宾 Windows 并由 Windows 托管)。有没有可能的方法来接收主机的主机名?并且无需像此链接中那样更改主机上的内容。

4

7 回答 7

9

我通过 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
于 2010-08-04T15:46:50.963 回答
4

我知道这是一个旧线程,但是如果有人仍然对“thomas lee”的回答感兴趣,上面的答案适用于VMWare 工作站VMWare fusion的最新版本。检索值的新命令是

rpctool machine.id.get

在为 Fusion 部署托管 VM 时使用它,以便在首次启动时自动设置机器名称。谢谢托马斯……

于 2015-07-25T20:21:12.723 回答
3

如果您能够在客户机操作系统上安装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 模块执行类似的查找。

于 2014-09-08T23:02:54.887 回答
2

原则上 - 不。

但是,可能存在(或将存在)某些允许恶意客户操作系统绕过 VM 沙箱的漏洞。例如,阅读Blue Pill。您还可以在研究人员自己的博客Invisible Things by Joanna Rutkowska上阅读更多详细信息。
当然,这些只是概念证明,但在软件中实现的任何安全性都会受到软件错误的影响......

于 2009-05-24T14:21:02.457 回答
2

我认为可能有很多方法可以做到这一点,并且可以想到两种方法:一种是在客户机中安装 ViX,连接到主机而不指定主机名,(谷歌“ViX 参考”然后看到“常见任务”)然后用于Vix_CopyFileFromHostToGuest()复制文件/etc/vmware/esx.conf。另一种方法是创建从访客到主机的某种网络连接(我使用过ssh,但如果您不知道主机名或 IP,您仍然可以像上面那样进行 ViX 连接并调度需要一段时间的工作)和然后netstat -a在客人说。输出将netstat包含主机名,如果它是可解析的。

于 2010-10-22T07:47:47.040 回答
1

您实际上在网络上有两台计算机。如果您为虚拟 NIC 使用专用网络/NAT 样式设置之一,则主机具有相当可预测的 IP 地址,因此您可以使用许多远程管理方法中的任何一种来询问它,就像您使用其他任何方法一样.

如果只有一个来宾操作系统,那么只需尝试使用与来宾 IP 地址相同的前 24 位的每个 IP 地址,就可以避免猜测地址。

于 2009-09-02T09:13:39.013 回答
1

在 vSphere 中

  1. 点击你的主机
  2. 单击配置选项卡
  3. 在软件部分单击 DNS 和路由

VMware|vCenter|vSphere 主机配置

于 2015-04-03T13:51:02.987 回答