バックグラウンドで実行されているVMに割り当てられたIPアドレスを取得する方法は?


27

次のコマンドを使用して、バックグラウンドでVirtual BoxからUbuntuインスタンスを実行します。

VBoxManage startvm ${VM_NAME} --type headless

それとGUIを介して実行することの主な違いは、起動後にGUIを開いているときにifconfig、IPアドレスが何であるかを確認しsshて、ホストの端末からIPアドレスにアクセスできることです。バックグラウンドでそれを行います。

ネットワーク上のIPアドレスの動的な割り当てを想定して、sshの目的で割り当てられたIPを新しく作成されたインスタンスに抽出する方法がありますか、またはIPを知らずにsshする方法があります(たとえば、ホストのバックドアポート経由) )?

回答:


16

virtualbox.orgの次のフォーラム投稿に示すように、VBoxManageコマンドを使用してIPアドレスを抽出できます。

VBoxManage guestproperty enumerate <vmname>

ただし、特に理由がない限り、ゲストvmに静的IPアドレスを割り当てることを強くお勧めします。これはおそらくDHCPを使用している場合でも可能です。DHCPサーバーが割り当てる範囲外のIPアドレスを選択するだけです。


7
そのコマンドはIPアドレスを返しませんでした
14:01に両生類

3
これを機能させるには、ゲストの追加をインストールする必要があります。
ヘビー

では、ゲストの追加がインストールされていない場合、どのようにこれを行いますか?
code_dredd

1
または:VBoxManage guestproperty get <vmname> "/VirtualBox/GuestInfo/Net/0/V4/IP"
トッドウォルトン

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が表示されない
ジョシュナンキン

@JoshNankinこれを解決しましたか?
ユーザー3933607

@JoshNankin VBoxManage guestproperty列挙<_name_of_VM_> | grep IPはあなたに与えますか?
weivall

OSXの場合-VBoxManage guestproperty enumerate 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テーブルを見て比較できます。ルーターにコンピューター名が表示されていれば、もちろん簡単になります。これはおそらく洗練されたソリューションではありませんが、機能します。

ほとんどのルーターは動的アドレスを割り当てますが、ほとんどの場合、同じIPをマシンまたはVMに与え続けます(ルーターは違いを知りません)。VirtualboxでVMをコピーする場合、新しいMACアドレスの設定を選択できます。これは、ルーターがVMを識別する方法です。


0

Pythonでも同様のタスクがありました。おそらく役立つでしょう。

pip install pyvbox

そして、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

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
いくつかの説明とコンテキストを提供する実質的な答えを探しています。2行のコードだけで答えないでください。答えが正しい理由を説明します。理想的には引用を使用します。説明を含まない回答は削除される場合があります。しかし、あなたの答えは、些細なフォーマットの違いを除いて、以前の答えと同等です。実際に何か貢献できるものがない限り、回答を投稿しないでください。
G-Manが「Reinstate Monica」と言う

:)。どういたしまして..まったくありません
Abdennour TOUMI

@ G-Man:数千のアカウントを持っている場合、それらにログインして投票します。残念ながら、私は答えを削除しません。
Abdennour TOUMI
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.