Come ottenere l'indirizzo IP assegnato alla VM in esecuzione in background?


27

Eseguo la mia istanza di Ubuntu dalla Virtual Box in background usando il seguente comando:

VBoxManage startvm ${VM_NAME} --type headless

La differenza principale tra questo ed eseguirlo attraverso la GUI è che, quando mi trovo nella GUI dopo l'avvio, posso controllare ifconfigper vedere qual è l'indirizzo IP in modo da poterlo sshaccedere dal mio terminale sull'host e ovviamente posso ' farlo in background.

Supponendo un'assegnazione dinamica di indirizzi IP sulla rete, c'è un modo per estrarre l'IP assegnato all'istanza appena creata per scopi di ssh O c'è un modo per ssh in esso senza conoscere l'IP (ad esempio tramite una porta backdoor sull'host )?

Risposte:


16

È possibile utilizzare il comando VBoxManage per estrarre l'indirizzo IP, come mostrato in questo post del forum su virtualbox.org:

VBoxManage guestproperty enumerate <vmname>

A meno che tu non abbia ottime ragioni, però, ti consigliamo di considerare fortemente l'assegnazione di un indirizzo IP statico al tuo guest VM. Questo è possibile anche se probabilmente stai usando DHCP. Basta scegliere un indirizzo IP al di fuori dell'intervallo allocato dal server DHCP.


7
quel comando non ha restituito l'indirizzo IP
anfibio

3
È necessario disporre delle aggiunte guest installate affinché funzioni.
pesante

Ok, come si fa quando non sono installate le aggiunte degli ospiti ?
code_dredd,

1
Oppure: VBoxManage guestproperty get <vmname> "/VirtualBox/GuestInfo/Net/0/V4/IP".
Todd Walton,

9

Prima di tutto assicurati di aver installato VirtualBox Extension Pack o installalo in caso contrario.

Ad esempio (per 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 da

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

Successivamente è possibile ottenere l'IP della 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}'

3
non mostra ancora l'IP per me
Josh Nankin,

@JoshNankin Hai risolto questo?
user3933607

@JoshNankin cosa enumera la proprietà guest di VBoxManage <_name_of_VM_> | grep IP ti dà?
Weivall,

per OSX - VBoxManage guestproperty enumerate 4ab1029f-23ff-4c5c-b4bd-3b6d68aa7cc0 | grep IP | grep -oE "\ b ([0-9] {1,3} \.) {3} [0-9] {1,3} \ b" Regex per IP Ho preso stackoverflow.com/questions/11482951/…
weivall

5

So di essere in ritardo per questa festa, ma funzionerà con VirtualBox 5.0.6.

Questo utilizza VBoxManage per acquisire un elenco di macchine virtuali in esecuzione, interrogare le loro proprietà in un ciclo e visualizzare gli indirizzi IP in modo carino.

#!/bin/bash

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

1

È possibile guardare la tabella DHCP nel router, prima dell'avvio e dopo e confrontarli. Se il router visualizza il nome del computer, ovviamente è molto più semplice. Questa non è forse una soluzione sofisticata, ma funziona.

La maggior parte dei router assegna indirizzi dinamici, ma continua a fornire a una macchina o VM (il router non conosce la differenza) lo stesso IP per la maggior parte del tempo. Se si copia una VM in Virtualbox, è possibile scegliere di impostare un nuovo indirizzo MAC, ovvero il modo in cui il router identifica la VM.


0

Avevo un compito simile in Python. Probabilmente sarebbe utile.

pip install pyvbox

e poi in 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

0

Ho usato l'opzione controlvm per avviare una traccia di pacchetto sul nic attivo del guest e ho aperto il file locale con WireShark. L'indirizzo IP degli ospiti sarà lì.

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

wireshark /full/path/file

Non dimenticare di disabilitare la traccia quando hai finito.

VBoxManage controlvm <vm-name> nictrace<1-N> off

-4
VMNAME="..."; # save ID of VM  in VMNAME variable
vboxmanage guestproperty enumerate $VM_NAME|grep IP|cut -f2 -d,|cut -f2 -d:

5
Siamo alla ricerca di risposte sostanziali che forniscano una spiegazione e un contesto. Per favore non dare solo una risposta in codice a due righe; spiega perché la tua risposta è giusta, idealmente con citazioni. Le risposte che non includono spiegazioni potrebbero essere rimosse. Ma anche la tua risposta equivale alle risposte precedenti, fatta eccezione per le banali differenze di formattazione. Per favore, non pubblicare una risposta a meno che tu non abbia effettivamente qualcosa di nuovo da contribuire.
G-Man dice "Reinstate Monica" il

:). di niente ... niente affatto
Abdennour TOUMI

@ G-Man: se hai mille account, accedi ad essi e vota verso il basso .. Sfortunatamente, non cancellerò la risposta.
Abdennour TOUMI,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.