Como obter o endereço IP atribuído à VM em execução em segundo plano?

22

Eu executei minha instância do Ubuntu fora do Virtual Box em segundo plano usando o seguinte comando:

VBoxManage startvm ${VM_NAME} --type headless

A principal diferença entre isso e executá-lo na GUI é que, quando estou na GUI depois de iniciado, posso verificar ifconfig para ver qual é o endereço IP, para que eu possa ssh nele meu terminal no host e, obviamente, não pode fazer isso em segundo plano.

Assumindo uma atribuição dinâmica de endereços IP na rede, existe uma maneira de extrair o IP atribuído para a instância recém-criada para fins de ssh OU existe uma maneira de ssh sem conhecer o IP (por exemplo, através de uma porta backdoor no host)?

    
por amphibient 20.08.2013 / 15:50

6 respostas

12

Você pode usar o comando VBoxManage para extrair o endereço IP, conforme mostrado em esta postagem do fórum no virtualbox.org:

VBoxManage guestproperty enumerate <vmname>

A menos que você tenha bons motivos, no entanto, você desejará considerar a atribuição de um endereço IP estático à sua guest vm. Isso é possível mesmo que você provavelmente esteja usando o DHCP. Basta escolher um endereço IP fora do intervalo que seu servidor DHCP aloca.

    
por 20.08.2013 / 15:56
7

Primeiro, certifique-se de ter instalado o VirtualBox Extension Pack ou instale-o, se não o fizer.

Por exemplo (para o Ubuntu)

> wget http://download.virtualbox.org/virtualbox/4.2.12/Oracle_VM_VirtualBox_Extension_Pack-4.2.12-84980.vbox-extpack
> sudo VBoxManage extpack install ./Oracle_VM_VirtualBox_Extension_Pack-4.2.12-84980.vbox-extpack

ou de

link

Depois disso, você pode obter o IP da VM

VBoxManage guestproperty enumerate <_name_of_VM_> | grep IP | grep -o -w -P -e '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}'
    
por 08.07.2014 / 06:12
5

Eu sei que estou atrasado para essa festa, mas isso funcionará com o VirtualBox 5.0.6.

Isso usa o VBoxManage para pegar uma lista de máquinas virtuais em execução, consulta suas propriedades em um loop e exibe os endereços IP de uma forma bonita.

#!/bin/bash

for f in $(VBoxManage list runningvms | awk -F\" '{print $2}'); do
      echo "$f:"
      VBoxManage guestproperty enumerate "$f" | grep IP
    done
    
por 05.11.2015 / 21:54
0

Você pode examinar a tabela DHCP no roteador, antes de inicializar e depois e compará-los. Se o roteador exibir o nome do computador, isso tornará muito mais fácil, é claro. Esta talvez não seja uma solução sofisticada, mas funciona.

    
por 10.09.2014 / 15:26
0

Eu tive uma tarefa semelhante em python. Provavelmente seria útil.

pip install pyvbox

e depois em python:

import virtualbox

vbox = virtualbox.VirtualBox()
vm = vbox.find_machine('running_vb_machine_name')
res = vm.enumerate_guest_properties('/VirtualBox/GuestInfo/Net/0/V4/IP')
ip = res[1][0]
print ip
    
por 25.03.2018 / 15:22
-4
VMNAME="..."; # save ID of VM  in VMNAME variable
vboxmanage guestproperty enumerate $VM_NAME|grep IP|cut -f2 -d,|cut -f2 -d:
    
por 15.11.2015 / 08:40

Tags