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?
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?
I 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 guestproperty enumerate {`VBoxManage list runningvms | awk -F"{" '{print $2}'` | grep IP | awk -F"," '{print $2}' | awk '{print $2}'
From virtualbox.org forum --
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.
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