假设我有VMWARE工作站(访客Windows并由Windows托管)。 有没有办法接收托管机器的主机名? 并且不会像this link中那样更改主机上的内容。
答案 0 :(得分:9)
我是通过machine.id将字符串从主机传递给guest来实现的。它确实需要在主机上进行更改(在每个VM的.vmx文件中也是如此),并且它不会自动发现主机的主机名,但它可以正常工作。在主机上,如果虚拟机处于关闭状态,请编辑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
答案 1 :(得分:3)
如果您能够在客户机操作系统上安装PowerCLI,则可以通过查找运行脚本的VM来访问某些ESX主机信息:
Connect-VIServer -Server <myvcenterserver>
$myVM = Get-VM -Name $(dir env:COMPUTERNAME).Value
$myVM.Host.Name
注意:这假定您的guest虚拟机与vCenter中的VM名称具有相同的主机名。
对于Linux来宾(OP称为Windows),我使用pyVmomi Python模块执行类似的查找。
答案 2 :(得分:3)
我知道这是一个老话题,但是如果有人仍然感兴趣的话,那么上面的答案是关于 VMWare工作站的最新版本和 VMWare融合。检索值的新命令是
rpctool machine.id.get
在为Fusion部署受管VM时使用此功能,以便在首次启动时自动设置计算机名称。谢谢托马斯......
答案 3 :(得分:2)
原则上 - 没有。
但是,可能存在(或将存在)允许恶意来宾操作系统绕过VM沙箱的某些漏洞。例如,阅读Blue Pill。您还可以在研究人员自己的博客Invisible Things by Joanna Rutkowska上阅读更多详细信息 当然,这些只是概念的证明,但在软件中实现的任何安全性都受到软件错误的影响......
答案 4 :(得分:2)
我认为可能有很多方法可以做到这一点,并且可以想到两个方法:
一种方法是在guest虚拟机中安装ViX,连接到主机而不指定主机名(Google“ViX reference”然后查看“常见任务”),然后使用Vix_CopyFileFromHostToGuest()
复制文件/etc/vmware/esx.conf
。
另一种方法是创建从访客到主机的某种网络连接(我使用ssh
但是如果你不知道主机名或IP,你仍然可以像上面那样进行ViX连接,并派遣一个工作需要一段时间),然后在客人中说netstat -a
。 netstat
输出将包含主机名,如果它是可解析的。
答案 5 :(得分:1)
网络上实际上有两台计算机。如果您使用其中一个专用网络/ NAT样式的虚拟网卡设置,那么主机具有相当可预测的IP地址,因此您可以使用任何一种远程管理方法来询问它,就像您对其他任何一种一样
如果只有一个客户操作系统,那么只需尝试使用与客户IP地址相同的前24位的每个IP地址,就可以在猜测地址时节省烘焙。
答案 6 :(得分:1)
在vSphere中