VirtualBox sin cabeza: ¿Por qué no puedo obtener la dirección de red de la propiedad del huésped?

VirtualBox sin cabeza: ¿Por qué no puedo obtener la dirección de red de la propiedad del huésped?

He instalado Ubuntu Desktop 14.04 (Trusty) en un cliente VirtualBox (conexión de red en puente, Guest Additions instalado). A veces ejecuto el cliente en modo sin cabeza (en lugar de a través de la GUI de VirtualBox) y accedo a él a través de SSH. Para iniciar un cliente de este tipo y obtener su dirección de red, normalmente:

nohup VBoxHeadless --startvm <VM_NAME> & #start as background process
#wait a bit for it to start up
VBoxManage guestproperty get <VM_NAME> "/VirtualBox/GuestInfo/Net/0/V4/IP"

Esto funciona para la mayoría de los clientes (Debian, Windows, no recuerdo si funcionó para mi cliente Ubuntu 13.10). Si esto falla, puedo solicitar todos los detalles, pero ni siquiera aquí aparece la dirección de red.

VBoxManage guestproperty enumerate <VM_NAME>

Mis propiedades de invitado para el cliente 14.04 son las siguientes:

Name: /VirtualBox/GuestInfo/OS/Product, value: Linux, timestamp: 1402485749624026000, flags: 
Name: /VirtualBox/HostInfo/GUI/LanguageID, value: en_US, timestamp: 1402652779530499000, flags: 
Name: /VirtualBox/HostInfo/VBoxVerExt, value: 4.3.12, timestamp: 1402652779119725000, flags: TRANSIENT, RDONLYGUEST
Name: /VirtualBox/GuestAdd/Vbgl/Video/SavedMode, value: 1366x722x32, timestamp: 1402485750186131000, flags: 
Name: /VirtualBox/GuestInfo/OS/Version, value: #53-Ubuntu SMP Wed Jun 4 21:02:19 UTC 2014, timestamp: 1402485749625558000, flags: 
Name: /VirtualBox/GuestAdd/VersionExt, value: 4.3.12, timestamp: 1402485749627827000, flags: 
Name: /VirtualBox/GuestAdd/Revision, value: 93733, timestamp: 1402485749628338000, flags: 
Name: /VirtualBox/HostGuest/SysprepExec, value: , timestamp: 1402652779118360000, flags: TRANSIENT, RDONLYGUEST
Name: /VirtualBox/HostGuest/SysprepArgs, value: , timestamp: 1402652779118595000, flags: TRANSIENT, RDONLYGUEST
Name: /VirtualBox/GuestAdd/Version, value: 4.3.12, timestamp: 1402485749627214000, flags: 
Name: /VirtualBox/HostInfo/VBoxRev, value: 93733, timestamp: 1402652779119840000, flags: TRANSIENT, RDONLYGUEST
Name: /VirtualBox/HostInfo/VBoxVer, value: 4.3.12, timestamp: 1402652779119633000, flags: TRANSIENT, RDONLYGUEST
Name: /VirtualBox/GuestInfo/OS/Release, value: 3.13.0-29-generic, timestamp: 1402485749624971000, flags: 
Name: /VirtualBox/GuestAdd/HostVerLastChecked, value: 4.3.12, timestamp: 1402485781945719000, flags: 

Mi solución es iniciar el cliente con la GUI de VBox, iniciar sesión y escribir ifconfigpara obtener la dirección, apagarlo e iniciarlo nuevamente sin cabeza, pero prefiero evitar eso. ¿Cómo puedo obtener la dirección de red de un cliente Trusty VirtualBox sin cabeza?

Respuesta1

  1. Busque la dirección mac de la nueva interfaz de trabajo de la que desea obtener la dirección. Puede hacer esto usando ifconfigo creo que aparece en la configuración de la máquina para la interfaz virtual.

  2. Desde el host (o cualquier máquina que esté utilizando para ssh) instaleescaneo arp. sudo apt-get install arp-scan. arp-scan enumera todos los pares de direcciones IP y MAC de la red.

  3. Luego, el comando para ejecutar arp-scan y buscar la dirección mac que desea se vería así

sudo arp-scan 10.253.0.0/24 | grep -i <mac address>

Es posible que deba especificar una interfaz si tiene más de 1, por ejemplo --interface=eth0. Y su red y subred pueden ser diferentes.

Ahora, para obtener crédito adicional, podría utilizar awksolo la dirección IP y armar su comando ssh, y tener todo hecho en un pequeño script.

Esto es lo que yo haría.

pseudocódigo:

start vm
sleep 1 min
ip=$(apr-scan | grep | awk print $2)
echo $ip
ssh <user>@$ip

Respuesta2

Esto parece deberse a que la máquina se inicia y espera en la pantalla GNU GRUB (visible en la Vista previa). Iniciarlo a través de la GUI una vez (para obtener la pantalla de inicio de sesión), detenerlo e iniciarlo sin cabeza parece funcionar.

Supongo que espera en GRUB después de una actualización del kernel o de Guest Additions. (Pero no estoy seguro.)

Respuesta3

El problema con el enfoque arp es que debe inicializar la comunicación TCP/IP o UDP con el cuadro antes de encontrarlo en la tabla arp del sistema.

Entonces debes conocer la IP ;) - problema del huevo y la gallina.

Sin embargo, de esta manera debería funcionar:

VBoxManage list runningvms 

"some_box_default_1486476025646_64328" {d20b1b0e-a5xf-4afc-94e0-4ea78d70539f}

VboxManage guestproperty get {d20b1b0e-a5xf-4afc-94e0-4ea78d70539f} /VirtualBox/GuestInfo/Net/1/V4/IP

Value: 10.XX.XX.XX

   Net/0  for eth0   Net1 for eth1   

Respuesta4

Después de buscar y sin buenos resultados, encontré este artículo:https://itsfoss.com/how-to-find-what-devices-are-connected-to-network-in-ubuntu/

en resumen:

  1. usa ifconfig para saber tu_ip
  2. utilizar nmap nmap -sn your_ip/24

Muestra todos los dispositivos conectados a la LAN; si hay pocos, es fácil conocer la IP de su VM.

información relacionada