VBoxManage 无法获取虚拟机的 IP 地址。

4
我正在尝试使用VBoxManage guestproperty enumerate <vm_name>获取虚拟机IP地址,但是得到了以下结果:
Name: /VirtualBox/HostInfo/GUI/LanguageID, value: en_US, timestamp: 1592898609729744000, flags: RDONLYGUEST
Name: /VirtualBox/HostInfo/VBoxVerExt, value: 6.1.6_Ubuntu, timestamp: 1592898565935338001, flags: TRANSIENT, RDONLYGUEST
Name: /VirtualBox/VMInfo/ResumeCounter, value: 0, timestamp: 1592898564265851000, flags: TRANSIENT, RDONLYGUEST
Name: /VirtualBox/HostGuest/SysprepExec, value: , timestamp: 1592898564265851000, flags: TRANSIENT, RDONLYGUEST
Name: /VirtualBox/HostGuest/SysprepArgs, value: , timestamp: 1592898564265851000, flags: TRANSIENT, RDONLYGUEST
Name: /VirtualBox/VMInfo/ResetCounter, value: 0, timestamp: 1592898564265851000, flags: TRANSIENT, RDONLYGUEST
Name: /VirtualBox/HostInfo/VBoxRev, value: 137129, timestamp: 1592898565935338002, flags: TRANSIENT, RDONLYGUEST
Name: /VirtualBox/HostInfo/VBoxVer, value: 6.1.6, timestamp: 1592898565935338000, flags: TRANSIENT, RDONLYGUEST

虚拟机有IP地址,我可以从主机ping通它。

user@user:~$ ping 192.168.88.120
PING 192.168.88.120 (192.168.88.120) 56(84) bytes of data.
64 bytes from 192.168.88.120: icmp_seq=1 ttl=64 time=1.04 ms
64 bytes from 192.168.88.120: icmp_seq=2 ttl=64 time=0.642 ms

主机操作系统: Mac OS,客户机操作系统:Ubuntu 20.04 $ VBoxManage guestproperty enumerate mcs | grep IP 名称:/VirtualBox/GuestInfo/Net/0/V4/IP,值:192.168.1.202,时间戳:1591676322850257000,标志: 名称:/VirtualBox/GuestInfo/Net/3/V4/IP,值:172.18.0.1,时间戳:1591676322873524000,标志: 名称:/VirtualBox/GuestInfo/Net/2/V4/IP,值:172.17.0.1,时间戳:1591676322853129000,标志: 名称:/VirtualBox/GuestInfo/Net/1/V4/IP,值:192.168.1.122,时间戳:1591676322852744000,标志: - Rob Raymond
2个回答

0

如果您的主机是Linux,那么这个答案可能会有所帮助。我的主机是Windows 11,我使用PowerShell和WSL Ubuntu。我没有安装客户端附加组件,只能看到MAC地址。

在WSL Linux上:

:/mnt/c/Program Files/Oracle/VirtualBox$ ./VBoxManage.exe showvminfo $vmname | grep MAC

或在PowerShell中:

& "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" showvminfo $vmname | findstr MAC

由于某些原因,WSL上的arp只会给我一个条目。但在PowerShell上运行arp -a可能会显示相应MAC地址的IP。如果没有,我们可以扫描开放的SSH端口,因为VM已准备好进行SSH。

在WSL Linux上:

# You could also run it without any filters for an interesting result
nmap 192.168.178.* -p 22 | grep open -B 5

输出结果大致如下:

Nmap scan report for nice.hostname (192.168.178.30)
Host is up (0.0012s latency).

PORT   STATE SERVICE
22/tcp open  ssh

这应该可以缩小要尝试的IP列表。好处是,在此之后,ARP表可能也会更新,因此我现在可以通过在PowerShell上运行arp -a来查看它。

如果列表太长,您可以将MAC地址转换为相同格式,如以下示例,或者您可以手动插入-

Powershell:

PS > "0800279A49B6" -replace '..(?!$)', '$&-'

然后可以在 PowerShell 中使用它来过滤列表,例如:

> arp -a | findstr -i 08-00-27-9A-49-B6
  192.168.178.30        08-00-27-9a-49-b6     dynamic

现在您已经获得了虚拟机的IP地址。如果您仍然无法看到IP地址,或者如果您的虚拟机在nmap扫描中没有显示出来,那么很有可能是虚拟机还没有完成启动。


0

需要先安装虚拟机增强功能才能使用该命令查看虚拟机信息


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接