¿Cómo obtener la dirección IP asignada a la VM que se ejecuta en segundo plano?

27

Ejecuto mi instancia de Ubuntu fuera de Virtual Box en segundo plano con el siguiente comando:

VBoxManage startvm ${VM_NAME} --type headless

La principal diferencia entre eso y ejecutarlo a través de la GUI es que, cuando estoy en la GUI después de que comienza, puedo verificar ifconfigcuál es la dirección IP para poder sshingresar desde mi terminal en el host y obviamente puedo ' No hagas eso en el fondo.

Suponiendo una asignación dinámica de direcciones IP en la red, ¿hay alguna manera de extraer la IP asignada a la instancia recién creada para propósitos ssh O hay una manera de ingresar en ella sin conocer la IP (por ejemplo, a través de un puerto de puerta trasera en el host )?

anfibio
fuente

Respuestas:

16

Puede usar el comando VBoxManage para extraer la dirección IP, como se muestra en esta publicación del foro en virtualbox.org:

VBoxManage guestproperty enumerate <vmname>

Sin embargo, a menos que tenga muy buenas razones, debe considerar asignar una dirección IP estática a su vm invitado. Esto es posible aunque probablemente esté utilizando DHCP. Simplemente elija una dirección IP fuera del rango que asigna su servidor DHCP.

ChrisInEdmonton
fuente
77
ese comando no devolvió la dirección IP
anfibio
3
Debe tener las adiciones de invitados instaladas para que esto funcione.
heavyd
Ok, entonces, ¿cómo se hace esto cuando las adiciones de invitados no están instaladas?
code_dredd
1
O: VBoxManage guestproperty get <vmname> "/VirtualBox/GuestInfo/Net/0/V4/IP" .
Todd Walton
9

En primer lugar, asegúrese de haber instalado VirtualBox Extension Pack o instálelo si no lo hace.

Por ejemplo (para 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

o de

https://www.virtualbox.org/wiki/Downloads

Después de eso, puede obtener IP de 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}'
Weivall
fuente
3
todavía no muestra la IP para mí
Josh Nankin
@JoshNankin ¿Resolviste esto?
user3933607
@JoshNankin lo que enumera VBoxManage guestproperty <_name_of_VM_> | grep IP te da?
Weivall
para OSX - VBoxManage guestproperty enumera 4ab1029f-23ff-4c5c-b4bd-3b6d68aa7cc0 | grep IP | grep -oE "\ b ([0-9] {1,3} \.) {3} [0-9] {1,3} \ b" Regex para IP tomé stackoverflow.com/questions/11482951/…
Weivall
5

Sé que llego tarde a esta fiesta, pero esto funcionará con VirtualBox 5.0.6.

Esto usa VBoxManage para obtener una lista de máquinas virtuales en ejecución, consultar sus propiedades en un bucle y mostrar las direcciones IP de una manera bonita.

#!/bin/bash

for f in $(VBoxManage list runningvms | awk -F\" '{print $2}'); do
      echo "$f:"
      VBoxManage guestproperty enumerate "$f" | grep IP
    done
Dan Stynchula
fuente
1

Puede mirar la tabla DHCP en el enrutador, antes del inicio y después, y compararlos. Si el enrutador muestra el nombre de la computadora, eso lo hace mucho más fácil, por supuesto. Quizás esta no sea una solución sofisticada, pero funciona.

La mayoría de los enrutadores asignan direcciones dinámicas, pero siguen dando a una máquina o VM (el enrutador no conoce la diferencia) la misma IP la mayor parte del tiempo. Si copia una VM en Virtualbox, puede elegir establecer una nueva dirección MAC, que es la forma en que el enrutador identifica la VM.

SPRBRN
fuente
0

Tuve una tarea similar en python. Probablemente sería útil.

pip install pyvbox

y luego en 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
romano
fuente
0

Utilicé la opción controlvm para iniciar un rastreo de paquetes en el nic activo del invitado y abrí el archivo local con wireshark. La dirección IP de los invitados estará allí.

VBoxManage controlvm <vm-name> nictracefile<1-N> /full/path/to/file
VBoxManage controlvm <vm-name> nictrace<1-N> on

wireshark /full/path/file

No olvide deshabilitar el rastreo cuando haya terminado.

VBoxManage controlvm <vm-name> nictrace<1-N> off
pp-paul
fuente
-4
VMNAME="..."; # save ID of VM  in VMNAME variable
vboxmanage guestproperty enumerate $VM_NAME|grep IP|cut -f2 -d,|cut -f2 -d:
Abdennour TOUMI
fuente
55
Estamos buscando respuestas sustanciales que brinden alguna explicación y contexto. No dé solo una respuesta de código de dos líneas; explica por qué tu respuesta es correcta, idealmente con citas. Las respuestas que no incluyen explicaciones pueden eliminarse. Pero también, su respuesta es equivalente a las respuestas anteriores, excepto por las diferencias de formato triviales. No publique una respuesta a menos que realmente tenga algo nuevo que aportar.
G-Man dice 'reinstalar a Mónica'
:). de nada ... en absoluto
Abdennour TOUMI
@ G-Man: si tiene miles de cuentas, inicie sesión en ellas y vote hacia abajo. Desafortunadamente, no eliminaré la respuesta.
Abdennour TOUMI