Bagaimana cara mendapatkan alamat IP yang ditugaskan untuk VM berjalan di latar belakang?


27

Saya menjalankan instance Ubuntu saya dari Virtual Box di latar belakang menggunakan perintah berikut:

VBoxManage startvm ${VM_NAME} --type headless

Perbedaan utama antara itu dan menjalankannya melalui GUI adalah bahwa, ketika saya berada di GUI setelah itu dimulai, saya dapat memeriksa ifconfiguntuk melihat apa alamat IP sehingga saya bisa sshke dalamnya dari terminal saya di host dan jelas bisa ' t melakukannya di latar belakang.

Dengan asumsi penugasan dinamis dari alamat IP pada jaringan, apakah ada cara untuk mengekstrak IP yang ditugaskan ke instance yang baru dibuat untuk keperluan ssh ATAU adakah cara untuk ssh ke dalamnya tanpa mengetahui IP (misalnya melalui port backdoor pada host )?

Jawaban:


16

Anda dapat menggunakan perintah VBoxManage untuk mengekstrak alamat IP, seperti yang ditunjukkan dalam posting forum ini di virtualbox.org:

VBoxManage guestproperty enumerate <vmname>

Namun, kecuali Anda memiliki alasan yang sangat bagus, Anda sebaiknya mempertimbangkan untuk menetapkan alamat IP statis ke tamu Anda. Ini dimungkinkan meskipun Anda mungkin menggunakan DHCP. Pilih saja alamat IP di luar rentang yang dialokasikan server DHCP Anda.


7
perintah itu tidak mengembalikan alamat IP
amfibi

3
Anda harus memasang tambahan tamu agar dapat berfungsi.
heavyd

Baiklah kalau begitu, bagaimana Anda melakukan ini ketika tambahan tamu tidak diinstal?
code_dredd

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

9

Pertama-tama pastikan Anda telah menginstal VirtualBox Extension Pack atau instal jika tidak.

Misalnya (untuk 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

atau dari

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

Setelah itu Anda bisa mendapatkan IP 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
masih tidak menampilkan IP untuk saya
Josh Nankin

@JoshNankin Apakah Anda menyelesaikan ini?
user3933607

@JoshNankin apa guestproperty enumerate VBoxManage <_name_of_VM_> | grep IP memberi Anda?
weivall

untuk 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 untuk IP Saya mengambil stackoverflow.com/questions/11482951/…
weivall

5

Saya tahu saya terlambat ke pesta ini, tetapi ini akan bekerja dengan VirtualBox 5.0.6.

Ini menggunakan VBoxManage untuk mengambil daftar menjalankan mesin virtual, menanyakan properti mereka dalam satu lingkaran, dan menampilkan alamat IP dengan cara yang cantik.

#!/bin/bash

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

1

Anda dapat melihat tabel DHCP di router, sebelum memulai dan sesudah dan membandingkannya. Jika router menampilkan nama komputer, itu tentu saja membuatnya jauh lebih mudah. Ini mungkin bukan solusi yang canggih, tetapi berhasil.

Sebagian besar router menetapkan alamat dinamis, tetapi mereka tetap memberikan mesin atau VM (router tidak tahu bedanya) IP yang sama untuk sebagian besar waktu. Jika Anda menyalin VM di Virtualbox Anda dapat memilih untuk mengatur alamat MAC baru, yang merupakan cara router mengidentifikasi VM.


0

Saya memiliki tugas serupa dengan python. Mungkin itu akan sangat membantu.

pip install pyvbox

dan kemudian dengan 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

Saya menggunakan opsi controlvm untuk memulai jejak paket pada nic aktif dari tamu dan membuka file lokal dengan wireshark. Alamat IP tamu akan ada di sana.

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

wireshark /full/path/file

Jangan lupa untuk menonaktifkan jejak saat Anda selesai.

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
Kami mencari jawaban penting yang memberikan penjelasan dan konteks. Tolong jangan berikan hanya jawaban kode dua baris; jelaskan mengapa jawaban Anda benar, idealnya dengan kutipan. Jawaban yang tidak termasuk penjelasan dapat dihapus. Tetapi juga, jawaban Anda setara dengan jawaban sebelumnya kecuali untuk perbedaan format sepele. Tolong jangan memposting jawaban kecuali Anda benar-benar memiliki sesuatu yang baru untuk disumbangkan.
G-Man Mengatakan 'Reinstate Monica'

:) Sama-sama ..
Abdennour TOUMI

@ G-Man: jika Anda memiliki ribuan akun, masuklah, dan pilih-turun .. Sayangnya, saya tidak akan menghapus jawabannya.
Abdennour TOUMI
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.