Jak uzyskać przypisanie adresu IP do maszyny wirtualnej działającej w tle?

27

Uruchamiam moją instancję Ubuntu poza Virtual Box w tle za pomocą następującego polecenia:

VBoxManage startvm ${VM_NAME} --type headless

Główną różnicą między tym a uruchomieniem go przez GUI jest to, że kiedy jestem w GUI po uruchomieniu, mogę sprawdzić, ifconfigjaki jest adres IP, dzięki czemu mogę wejść sshdo niego z mojego terminala na hoście i oczywiście mogę Zrób to w tle.

Zakładając dynamiczne przypisywanie adresów IP w sieci, istnieje sposób na wyodrębnienie przypisanego adresu IP do nowo utworzonej instancji do celów ssh LUB istnieje sposób na ssh do niego bez znajomości adresu IP (np. Przez port backdoor na hoście )?

amfibia
źródło

Odpowiedzi:

16

Możesz użyć polecenia VBoxManage, aby wyodrębnić adres IP, jak pokazano w tym wpisie na forum na virtualbox.org:

VBoxManage guestproperty enumerate <vmname>

O ile nie masz bardzo dobrych powodów, powinieneś zdecydowanie rozważyć przypisanie statycznego adresu IP gościowi vm. Jest to możliwe, nawet jeśli prawdopodobnie używasz DHCP. Wystarczy wybrać adres IP spoza zakresu przydzielonego przez serwer DHCP.

ChrisInEdmonton
źródło
7
to polecenie nie
zwróciło
3
Aby to działało, musisz mieć zainstalowane dodatki gości.
heavyd
Ok, więc jak to zrobić, gdy dodatki dla gości nie są zainstalowane?
code_dredd
1
Lub: VBoxManage guestproperty get <vmname> "/VirtualBox/GuestInfo/Net/0/V4/IP".
Todd Walton,
9

Przede wszystkim upewnij się, że zainstalowałeś VirtualBox Extension Pack lub zainstaluj go, jeśli nie.

Na przykład (dla 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

lub z

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

Następnie możesz uzyskać adres IP maszyny wirtualnej

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
źródło
3
nadal nie wyświetla mi adresu IP
Josh Nankin
@JoshNankin Czy to rozwiązałeś?
user3933607,
@JoshNankin co VBoxManage wylicza wartość właściwości gościa <nazwa_w_VM_> | grep IP daje ci?
weivall
dla OSX - VBoxManage guestproperty wylicz 4ab1029f-23ff-4c5c-b4bd-3b6d68aa7cc0 | grep IP | grep -oE "\ b ([0-9] {1,3} \.) {3} [0-9] {1,3} \ b" Regex dla IP Wziąłem stackoverflow.com/questions/11482951/...
weivall
5

Wiem, że jestem spóźniony na to przyjęcie, ale będzie działać z VirtualBox 5.0.6.

Korzysta z VBoxManage, aby pobrać listę uruchomionych maszyn wirtualnych, sprawdzić ich właściwości w pętli i ładnie wyświetla adresy IP.

#!/bin/bash

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

Możesz spojrzeć na tabelę DHCP w routerze, przed uruchomieniem i po oraz porównać je. Jeśli router wyświetla nazwę komputera, jest to oczywiście znacznie łatwiejsze. To może nie jest wyrafinowane rozwiązanie, ale działa.

Większość routerów przypisuje adresy dynamiczne, ale przez większość czasu nadaje maszynie lub maszynie wirtualnej (router nie zna różnicy) ten sam adres IP. Jeśli skopiujesz maszynę wirtualną w Virtualbox, możesz ustawić nowy adres MAC, czyli sposób, w jaki router identyfikuje maszynę wirtualną.

SPRBRN
źródło
0

Miałem podobne zadanie w Pythonie. Prawdopodobnie byłoby to pomocne.

pip install pyvbox

a następnie w 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
rzymski
źródło
0

Użyłem opcji controlvm, aby rozpocząć śledzenie pakietów w aktywnej nici gościa i otworzyłem plik lokalny za pomocą wireshark. Będzie tam adres IP gości.

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

wireshark /full/path/file

Nie zapomnij wyłączyć śledzenia, gdy skończysz.

VBoxManage controlvm <vm-name> nictrace<1-N> off
pp-paul
źródło
-4
VMNAME="..."; # save ID of VM  in VMNAME variable
vboxmanage guestproperty enumerate $VM_NAME|grep IP|cut -f2 -d,|cut -f2 -d:
Abdennour TOUMI
źródło
5
Szukamy istotnych odpowiedzi, które dostarczą wyjaśnienia i kontekstu. Proszę nie podawać tylko dwuwierszowej odpowiedzi na kod; wyjaśnij, dlaczego Twoja odpowiedź jest poprawna, najlepiej z cytatami. Odpowiedzi, które nie zawierają wyjaśnień, mogą zostać usunięte. Ale twoja odpowiedź jest odpowiednikiem poprzednich odpowiedzi, z wyjątkiem trywialnych różnic w formatowaniu. Nie publikuj odpowiedzi, chyba że masz coś nowego do dodania.
G-Man mówi „Przywróć Monikę”
:). nie ma za co ... w ogóle
Abdennour TOUMI
@ G-Man: jeśli masz tysiące kont, zaloguj się na nich i zagłosuj .. Niestety nie usunę odpowiedzi.
Abdennour TOUMI,