I have VirtualBox set up on a server. It was set up as a Bridged VM, and has an IP address. It's now running in headless mode, started with "VBoxHeadless -s PuppetMaster".
How can I find out what IP the VM is using VBoxManage?
Server Fault is a question and answer site for system and network administrators. It only takes a minute to sign up.
Sign up to join this communityI could find my Headless VB with the combination of following commands:
# Update arp table
for i in {1..254}; do ping -c 1 192.168.178.$i & done
# Find vm name
VBoxManage list runningvms
# Find MAC: subsitute vmname with your vm's name
VBoxManage showvminfo vmname
# Find IP: substitute vname-mac-addr with your vm's mac address in ':' notation
arp -a | grep vmname-mac-addr
But even easier: in linux, you can connect to the VB:
# Default VirtualBox Listening Port: 3389
rdesktop -N hostingserver:3389
This command will open a shell window, and you'll have direct access to the Headless VB, where you can retrieve your Headless VB IP: ip addr
Install guest additions and (assuming linux is the guest) you can run the following:
VBoxManage --nologo guestcontrol yourVirtualMachineName execute --image "/sbin/ifconfig" --username yourUser --password yourPassword --wait-exit --wait-stdout -- -a
VBoxManage --nologo guestcontrol yourVirtualMachineName --username yourUser --password yourPassword run -- /sbin/ifconfig -a
VBoxManage guestproperty enumerate {`VBoxManage list runningvms | awk -F"{" '{print $2}'` | grep IP | awk -F"," '{print $2}' | awk '{print $2}'
VBoxManage list runningvms | grep vmname | awk ...
VBoxManage guestproperty get <vm-name> "/VirtualBox/GuestInfo/Net/0/V4/IP" | cut -f2 -d " "
Not sure if VBoxManage can give you that information directly. What you can do is run the following command to see the network card configuration.
VBoxManage showvminfo PuppetMaster | egrep ^NIC
That will if nothing else will provide you with the MAC address, allowing you to find out the actual ip address by other means.
You can get it directly using this command:
VBoxManage list bridgedifs
From virtualbox.org forum --
VBoxManage guestproperty get <vm-name> "/VirtualBox/GuestInfo/Net/0/V4/IP" | cut -f2 -d " "
Without guest additions, on a Windows host, and unable to rdesktop
into the VM, this is what I did:
Get MAC of virtual machine (WSL Linux) and scan the network:
VBoxManage.exe showvminfo $vmname | grep MAC # get MAC address
nmap 192.168.178.* -p 22 | grep open -B 5 # Find machines ready to SSH
The scan itself showed me the desired IP, but I can confirm it on the PowerShell, using the MAC I got earlier. For example:
arp -a | findstr -i 08-00-27-9A-49-B6
Output is like:
192.168.178.30 08-00-27-9a-49-b6 dynamic
And that confirms the IP address.
Here is a simple script I put together to get the IP of my Vbox VM.
#!/bin/bash
Knowing my VM is named 'ubuntu22' uuid_raw=$(vboxmanage list runningvms | grep ubuntu) UUID "ubuntu22" {6eac6956-2952-425f-ba20-e865d0970e33} uuid=$(echo $uuid_raw | awk -F' ' '{print $2}' | sed s/{// | sed s/}//) echo "UUID ${uuid}" mac=$(vboxmanage showvminfo --details ${uuid} | grep MAC | awk -F'MAC: ' '{print $2}'| awk -F',' '{print $1}') arp -a | sed s/://g | grep -i $mac
Yields the following output:
UUID 90dcc1dc-e14d-4362-bc7e-c3f58698beb9
? (10.1.50.193) at 080027fd0e63 [ether] on eno1