Arka planda çalışan VM'ye atanan IP adresi nasıl alınır?


27

Aşağıdaki komutu kullanarak Ubuntu örneğimi Sanal Kutunun dışında arka planda çalıştırıyorum:

VBoxManage startvm ${VM_NAME} --type headless

Bunun ve GUI üzerinden çalıştırmanın arasındaki temel fark, başladıktan sonra GUI'deyken, ifconfigIP adresinin ne olduğunu görebilmeyi kontrol edebilmemdir , böylece sshana bilgisayardaki terminalimden bulabilirim ve açıkçası Bunu arka planda yapmayın.

Ağ üzerinde dinamik bir IP adresi tahsisi varsayarak, atanan IP'yi ssh amaçları için yeni yaratılan örneğe çıkartmanın bir yolu var mı, yoksa IP'yi bilmeden ssh içine sokmanın bir yolu var (ör., Ana bilgisayardaki bir arka kapı portu aracılığıyla) )?

Yanıtlar:


16

VBoxManage komutunu , sanal adres.org'daki forum forumunda gösterildiği gibi IP adresini çıkarmak için kullanabilirsiniz:

VBoxManage guestproperty enumerate <vmname>

Çok iyi nedenleriniz olmadıkça konuk vm’nize statik IP adresi atamayı şiddetle düşünmek isteyeceksiniz. Bu muhtemelen DHCP kullanıyor olsanız bile mümkündür. Yalnızca DHCP sunucunuzun ayırdığı aralığın dışında bir IP adresi seçin.


7
bu komut IP adresini döndürmedi
amortisör

3
Bunun çalışması için konuk eklemelerinin kurulu olması gerekir.
heavyd

Konuk eklemeler olduğunda Tamam o, bunu nasıl yaparsınız değil yüklenmiş?
code_dredd

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

9

Öncelikle VirtualBox Extension Pack'i kurduğunuzdan emin olun veya yoksa yükleyin.

Örneğin (Ubuntu için)

> 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

veya

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

Bundan sonra VM'nin IP adresini alabilirsiniz

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
hala benim için IP görüntülemiyor
Josh Nankin

@JoshNankin Bunu çözdün mü?
user3933607

@JoshNankin ne VBoxManage guestproperty enumerate <_name_of_VM_> | grep IP size verir?
weivall

için giriş - VBoxManage guestproperty 4ab1029f-23ff-4c5c-b4bd-3b6d68aa7cc0 numaralandır | grep IP | grep -oE "\ b ([0-9] {1,3} \.) {3} [0-9] {1,3} \ b" IP için Regex stackoverflow.com/questions/11482951/…
weivall

5

Bu partiye geç kaldığımı biliyorum, ancak bu VirtualBox 5.0.6 ile çalışacak.

Bu, çalışan sanal makinelerin bir listesini almak için VBoxManage'ı kullanır, özelliklerini bir döngüde sorgular ve IP adreslerini hoş bir şekilde görüntüler.

#!/bin/bash

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

1

Yönlendiricideki DHCP tablosuna, başlangıçtan önce ve sonra bunları karşılaştırabilir ve karşılaştırabilirsiniz. Yönlendirici bilgisayar adını görüntülerse, bu elbette çok daha kolay hale getirir. Bu belki de sofistike bir çözüm değil ama işe yarıyor.

Yönlendiricilerin çoğu dinamik adresler atar, ancak bir makineye veya VM'ye (yönlendirici farkı bilmiyor) çoğu zaman aynı IP'yi vermeye devam ederler. Sanal Kutu’daki bir VM’yi kopyalarsanız, yönlendiricinin VM’yi tanımlaması için yeni bir MAC adresi belirlemeyi seçebilirsiniz.


0

Python'da da benzer bir görevim vardı. Muhtemelen yardımcı olacaktır.

pip install pyvbox

ve sonra python içinde:

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

Controlvm seçeneğini, konuğun aktif nicinde bir paket izini başlatmak için kullandım ve yerel dosyayı wireshark ile açtım. Konukların IP adresi orada olacak.

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

wireshark /full/path/file

İşiniz bittiğinde izlemeyi devre dışı bırakmayı unutmayın.

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
Bazı açıklamalar ve bağlamlar sağlayacak önemli cevaplar arıyoruz. Lütfen sadece iki satırlı bir kod cevabı vermeyin; Cevabınızın neden doğru olduğunu, ideal olarak alıntılarla açıklayın. Açıklama içermeyen cevaplar kaldırılabilir. Ancak, cevabınız önemsiz biçimlendirme farklılıkları dışında önceki yanıtlara eşittir. Gerçekten katkıda bulunacak yeni bir şeyiniz yoksa lütfen cevap yazmayın.
G-Man 'Monica'yı Yeniden Girin'

:). Bir şey değil .. hiç
Abdennour TOUMI

@ G-Man: Bin tane hesabınız varsa, giriş yapın ve oy verin. Ne yazık ki, cevabı silmeyeceğim.
Abdennour TOUMI
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.