如何使用 VMware Fusion 查找虚拟机的 IP 地址?

Adr*_*ron 21 virtualization vmware-fusion ip virtual-machine

是否可以在不实际进入虚拟机上运行的操作系统的情况下使用 VMware Fusion 确定虚拟机的 IP?我正在寻找菜单选项、命令行或其他方式,我可以使用 VMware Fusion 软件本身针对虚拟映像发布这些选项。

谢谢 - 阿德龙

小智 56

毫不奇怪,VMWare 为此提供了一个内置工具,vmrun. /Applications/VMware Fusion.app/Contents/Library/vmrun尽管它在其他 Fusion 版本中有所移动,但它仍在下层。

 vmrun list
    Total running VMs: 1
    .docker/machine/machines/myvm.vmx

  vmrun getGuestIPAddress ~/.docker/machine/machines/myvm.vmx
    172.16.213.128
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案。完美地工作。 (8认同)
  • 好的!`vmrun` 默认在我的 Mac 的 PATH 中,所以 ```vmrun getGuestIPAddress "$(vmrun list | grep vmx)"```,包括引号! (4认同)
  • 显然,VMWare 工具需要在 VM 中运行。(融合V8.5) (2认同)
  • 可以确认这在 VMware Fusion v12 中仍然有效 (2认同)

小智 11

这是一个提示,以防它可以帮助任何人。安装avahi-daemon在虚拟机上。这允许您通过 hostname 进行连接vmname.local,其中vmname是您的虚拟机的名称。就我而言,VM 的名称是baremetal并且我可以在主机上运行:

ssh baremetal.local
Run Code Online (Sandbox Code Playgroud)

无需知道 VM 的 IP。:)


Lar*_*dua 5

正如 Mikhail T. 所说,“因为 VMWare 正在提供 NAT-ing,它应该能够告诉我们,它当前正在为哪些地址进行 NAT-ing。” 确实如此:

在我的 VMware Fusion 6 安装中,vmnet-dhcpd守护进程将其租约写入文件/var/db/vmware/vmnet-dhcpd-vmnetX.leases,其中“X”是 1 和 8。根据经验:-) 我确定我应该寻找 vmnet8。以下是租赁文件的摘录/var/db/vmware/vmnet-dhcpd-vmnet8.leases

lease 192.168.177.129 {
    starts 1 2014/02/17 09:34:19;
    ends 1 2014/02/17 09:36:56;
    hardware ethernet 00:0c:29:2b:2b:10;
    client-hostname "ubuntu";
}
Run Code Online (Sandbox Code Playgroud)

client-hostname是虚拟机的名称,字后的数字lease是它的IP。您可以解析这些条目,或者只是查看最新的条目。确保您正在查看的租约仍然有效。


Wes*_*ley 0

简短回答:否

长答案:不,但也许

IP 地址纯粹是操作系统的责任。因此,容纳操作系统的虚拟框架并不了解其中的 TCP/IP 堆栈,除非该框架有共生添加,例如 Hyper-V 和 VMware 的附加来宾工具(感谢下面评论中的 todda.speot.is) 。这与想要在不先启动虚拟机的情况下浏览虚拟机上的文件没有太大区别。

从技术上讲,如果虚拟机依赖于 DHCP,您可以在 DHCP 服务器(可能是 LAN 的路由器)中搜索分配给虚拟 NIC 的 MAC 地址的最后一个租约,以便很好地了解 IP 可能什么下次启动时。假设在您查看租约历史记录和虚拟机启动之间,相同的 IP 没有分发给另一个设备。

  • **不要停在这里!下面是一个更好的答案。** (5认同)