백그라운드에서 실행중인 VM에 할당 된 IP 주소를 얻는 방법은 무엇입니까?


27

다음 명령을 사용하여 백그라운드에서 Virtual Box에서 Ubuntu 인스턴스를 실행합니다.

VBoxManage startvm ${VM_NAME} --type headless

그것과 GUI를 통해 실행하는 것의 주요 차이점은 시작 후 GUI에있을 때 호스트의 터미널에서 ifconfigIP 주소가 무엇인지 확인할 수 있다는 것입니다. ssh' t 백그라운드에서 그렇게하십시오.

네트워크에서 IP 주소를 동적으로 할당한다고 가정하면, ssh 목적으로 새로 생성 된 인스턴스에 할당 된 IP를 추출하는 방법이 있습니까, 또는 IP를 알지 못하고 (예 : 호스트의 백도어 포트를 통해) ssh로 ssh하는 방법이 있습니까? )?

답변:


16

virtualbox.org 의이 포럼 게시물 에 표시된 것처럼 VBoxManage 명령을 사용하여 IP 주소를 추출 할 수 있습니다 .

VBoxManage guestproperty enumerate <vmname>

그러나 적절한 이유가 없다면 게스트 IP에 고정 IP 주소를 할당하는 것이 좋습니다. 아마도 DHCP를 사용하고있는 경우에도 가능합니다. DHCP 서버가 할당 한 범위 밖의 IP 주소 만 선택하십시오.


7
그 명령은 IP 주소를 반환하지 않았습니다
양서류

3
이 기능을 사용하려면 게스트 추가 기능을 설치해야합니다.
14:42에

그러면 게스트 추가가 설치 되지 않은 경우 어떻게해야합니까?
code_dredd

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

9

먼저 VirtualBox Extension Pack 을 설치했는지 확인하십시오 .

예를 들어 (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

또는

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

그 후 당신은 VM의 IP를 얻을 수 있습니다

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
여전히 나를 위해 IP를 표시하지 않습니다
Josh Nankin

@JoshNankin이 문제를 해결 했습니까?
user3933607

@JoshNankin VBoxManage guestproperty가 <_name_of_VM_>을 열거하는 내용 | grep IP가 제공합니까?
weivall

OSX 용-VBoxManage guestproperty는 4ab1029f-23ff-4c5c-b4bd-3b6d68aa7cc0를 열거합니다 | grep IP | grep -oE "\ b ([0-9] {1,3} \.) {3} [0-9] {1,3} \ b"IP 정규식에 stackoverflow.com/questions/11482951/…
weivall

5

이 파티에 늦었다는 것을 알고 있지만 VirtualBox 5.0.6에서 작동합니다.

VBoxManage를 사용하여 실행중인 가상 머신 목록을 가져 와서 해당 속성을 루프로 쿼리하고 IP 주소를 예쁜 방식으로 표시합니다.

#!/bin/bash

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

1

라우터를 시작하기 전과 후에 라우터에서 DHCP 테이블을보고 비교할 수 있습니다. 라우터에 컴퓨터 이름이 표시되면 당연히 훨씬 쉬워집니다. 이것은 아마도 해결책이 아니지만 작동합니다.

대부분의 라우터는 동적 주소를 할당하지만 대부분의 시간 동안 머신이나 VM (라우터는 차이를 알지 못함)에 동일한 IP를 계속 제공합니다. Virtualbox에서 VM을 복사하는 경우 라우터가 VM을 식별하는 방식 인 새 MAC 주소를 설정하도록 선택할 수 있습니다.


0

나는 파이썬에서 비슷한 일을했다. 아마 도움이 될 것입니다.

pip install pyvbox

그리고 파이썬에서 :

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 옵션을 사용하여 게스트의 활성 NIC에서 패킷 추적을 시작하고 wireshark로 로컬 파일을 열었습니다. 손님의 IP 주소가 거기에있을 것입니다.

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

wireshark /full/path/file

완료되면 추적을 비활성화하는 것을 잊지 마십시오.

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
우리는 설명과 맥락을 제공하는 실질적인 답변을 찾고 있습니다. 두 줄의 코드 답변 만 제공하지 마십시오. 인용에 이상적으로 답이 적합한 이유를 설명하십시오. 설명이 포함되지 않은 답변은 제거 될 수 있습니다. 또한 답은 사소한 형식 차이를 제외하고는 이전 답변과 동일합니다. 실제로 새로운 내용이 없다면 답변을 올리지 마십시오.
G-Man, 'Reinstate

:). 당신은 환영합니다 .. 전혀
Abdennour TOUMI

@ G-Man : 수천 개의 계정이있는 경우, 로그인 한 다음 투표를하십시오. 불행히도, 나는 답변을 삭제하지 않을 것입니다.
Abdennour TOUMI
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.