У меня установлен VirtualBox на сервере. Она была настроена как виртуальная машина с мостовым подключением и имеет IP-адрес. Теперь он работает в безголовом режиме, запущенном с "VBoxHeadless -s PuppetMaster".
Как я могу узнать, какой IP-адрес виртуальная машина использует VBoxManage?
Я мог найти свой VB без головы с помощью комбинации следующих команд:
# 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
Но еще проще: в linux можно подключиться к VB:
# Default VirtualBox Listening Port: 3389
rdesktop -N hostingserver:3389
Эта команда откроет окно оболочки, и у вас будет прямой доступ к Headless VB, где вы можете получить свой IP-адрес Headless VB: ip addr
Установите гостевые дополнения и (при условии, что Linux является гостем) вы можете запустить следующее:
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}'
Не уверен, что VBoxManage может предоставить вам эту информацию напрямую. Что вы можете сделать, так это выполнить следующую команду, чтобы увидеть конфигурацию сетевой карты.
VBoxManage showvminfo PuppetMaster | egrep ^NIC
Это будет, если ничто другое не предоставит вам MAC-адрес, что позволит вам узнать фактический IP-адрес другими способами.
Вы можете получить его напрямую, используя эту команду:
VBoxManage list bridgedifs
Из virtualbox.org Форум --
VBoxManage guestproperty get <vm-name> "/VirtualBox/GuestInfo/Net/0/V4/IP" | cut -f2 -d " "