Wie erhält man eine IP-Adresse, die der VM im Hintergrund zugewiesen wird?


27

Ich starte meine Ubuntu-Instanz aus Virtual Box im Hintergrund mit dem folgenden Befehl:

VBoxManage startvm ${VM_NAME} --type headless

Der Hauptunterschied zwischen diesem und dem Ausführen über die GUI besteht darin, dass ich, wenn ich mich nach dem Start in der GUI befinde, überprüfen kann ifconfig, wie die IP-Adresse lautet, damit ich sshvon meinem Terminal auf dem Host darauf zugreifen und offensichtlich " Tun Sie das nicht im Hintergrund.

Unter der Annahme einer dynamischen Zuweisung von IP-Adressen im Netzwerk gibt es eine Möglichkeit, die zugewiesene IP-Adresse für SSH-Zwecke in die neu erstellte Instanz zu extrahieren, ODER gibt es eine Möglichkeit, SSH-Adressen einzugeben, ohne die IP-Adresse zu kennen (z. B. über einen Backdoor-Port auf dem Host) )?

Antworten:


16

Sie können den Befehl VBoxManage verwenden, um die IP-Adresse zu extrahieren, wie in diesem Forumsbeitrag auf virtualbox.org gezeigt:

VBoxManage guestproperty enumerate <vmname>

Es sei denn, Sie haben sehr gute Gründe, sollten Sie jedoch in Erwägung ziehen, Ihrem Gast-VM eine statische IP-Adresse zuzuweisen. Dies ist möglich, obwohl Sie wahrscheinlich DHCP verwenden. Wählen Sie einfach eine IP-Adresse außerhalb des von Ihrem DHCP-Server zugewiesenen Bereichs.


7
dass Befehl , um die IP - Adresse nicht zurückgekommen
amphibient

3
Sie müssen die Gastzusätze installiert haben, damit dies funktioniert.
Heavyd

Ok, wie machst du das, wenn Gastzugaben nicht installiert sind?
Code_dredd

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

9

Stellen Sie zunächst sicher, dass Sie VirtualBox Extension Pack installiert haben, oder installieren Sie es, wenn nicht.

Zum Beispiel (für 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

oder von

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

Danach können Sie die IP der VM erhalten

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
zeigt immer noch nicht die IP für mich
Josh Nankin

@JoshNankin Hast du das gelöst?
user3933607

@JoshNankin Welche VBoxManage-Gast-Eigenschaft zählt <_name_der_VM_> | auf? grep IP gibt dir?
Weivall

Für OSX - Auflisten der VBoxManage-Gast-Eigenschaft 4ab1029f-23ff-4c5c-b4bd-3b6d68aa7cc0 | grep IP | grep -oE "\ b ([0-9] {1,3} \.) {3} [0-9] {1,3} \ b" Regex für IP Ich habe stackoverflow.com/questions/11482951/…
Weivall

5

Ich weiß, dass ich zu spät zu dieser Party komme, aber das wird mit VirtualBox 5.0.6 funktionieren.

Dies verwendet VBoxManage, um eine Liste der ausgeführten virtuellen Maschinen abzurufen, deren Eigenschaften in einer Schleife abzufragen und die IP-Adressen auf hübsche Weise anzuzeigen.

#!/bin/bash

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

1

Sie können die DHCP-Tabelle im Router vor und nach dem Start anzeigen und vergleichen. Wenn der Router den Computernamen anzeigt, ist dies natürlich viel einfacher. Dies ist vielleicht keine ausgefeilte Lösung, aber es funktioniert.

Die meisten Router weisen dynamische Adressen zu, geben jedoch einem Computer oder einer VM (Router kennt den Unterschied nicht) die meiste Zeit dieselbe IP. Wenn Sie eine VM in Virtualbox kopieren, können Sie eine neue MAC-Adresse festlegen, anhand derer der Router die VM identifiziert.


0

Ich hatte eine ähnliche Aufgabe in Python. Wahrscheinlich wäre es hilfreich.

pip install pyvbox

und dann 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

Ich habe die controlvm-Option verwendet, um eine Paketverfolgung auf dem aktiven NIC des Gasts zu starten und die lokale Datei mit wireshark zu öffnen. Die IP-Adresse des Gastes wird dort angegeben.

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

wireshark /full/path/file

Vergessen Sie nicht, den Trace zu deaktivieren, wenn Sie fertig sind.

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
Wir suchen nach fundierten Antworten, die einige Erklärungen und Zusammenhänge liefern. Bitte geben Sie nicht nur eine zweizeilige Code-Antwort; Erklären Sie, warum Ihre Antwort richtig ist, idealerweise mit Zitaten. Antworten, die keine Erklärungen enthalten, werden möglicherweise entfernt. Ihre Antwort ist jedoch bis auf geringfügige Formatierungsunterschiede mit den vorherigen Antworten identisch. Bitte posten Sie keine Antwort, es sei denn, Sie haben tatsächlich etwas Neues beizutragen.
G-Man sagt, dass Monica

:). u'r welcome .. überhaupt nicht
Abdennour TOUMI

@ G-Man: Wenn du tausend Accounts hast, melde dich an und stimme ab. Leider werde ich die Antwort nicht löschen.
Abdennour TOUMI
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.