VirtualBox(Oracle VM VirtualBox)のVBoxManageコマンドって、なんか微妙。たぶん使い方が分かってないとは思うけど

みなさ~ん、VirtualBox、使ってますか?ワシもじゃ ワシもじゃみんな!!

正式名称は、

Oracle VM VirtualBox

ってことみたいですね、Oracleさんですね。 

でもって、VBoxManageコマンドなるものが存在するんですね。

VBoxManage is the command-line interface to VirtualBox. With it, you can completely control VirtualBox from the command line of your host operating system.

Chapter 8. VBoxManage - Oracle VM VirtualBox® User Manual

⇧  ホストマシンから完璧にコントロールできると。 

VBoxManage supports all the features that the graphical user interface gives you access to, but it supports a lot more than that. It exposes really all the features of the virtualization engine, even those that cannot (yet) be accessed from the GUI.

Chapter 8. VBoxManage - Oracle VM VirtualBox® User Manual

⇧  GUIからできないこともサポートしてるって仰っていますね。

 

ということで、今回は、VBoxManageについて、なんかモヤモヤしたのでメモしていきます。

 

 

ネットワークアダプターとIPの関係が知りたかった...

まぁ、何ていうか、 結論です。ネット上には、個別に調べる方法は載っていたんですが、じゃあ、そのネットワークアダプターを利用しているIPアドレスはどれよ?ってところの解決が分からず(調べ方が悪いんだと思いますが)。

まずは、VirtualBoxで作成してある仮想マシンの一覧を表示。

VBoxManage list vms

f:id:ts0818:20180707132209p:plain

⇧  自分の場合ですと、いまは、これだけの仮想マシンがある状態です。

"仮想マシン名" {uuid}

という感じで表示されます。

まずは、仮想マシンに設定されているNIC(Network Interface Card)の一覧を表示。今回は、"CentOS7.4"という名前の仮想マシンのものを表示。

Vboxmanage showvminfo [仮想マシン名] |grep "NIC"

f:id:ts0818:20180707132515p:plain

Vboxmanage showvminfo [uuid] |grep "NIC"

f:id:ts0818:20180707133724p:plain

⇧  "仮想マシン名"、{uuid}のどちらでも、情報を表示できるようです。

NIC1が、Attachmet: NAT。NIC2が、Attachmet: Host-only Interfaceとなっています。コマンドでは、NIC8まであるので、8個までネットワークの設定ができるようですね。

 

GUIのほうで確認すると、自分の場合は、「ネットワーク」に

  • アダプター1: Intel PRO/1000 MT Desktop(NAT)
  • アダプター2: Intel PRO/1000 MT Desktop(ホストオンリーアダプター, 'VirtualBox Host-Only Ethernet Adapter #3')

 の2種類が設定されています。

f:id:ts0818:20180707134102p:plain

GUIでの「ネットワーク」の設定は、仮想マシンを選択した状態で右クリックし、「設定(S)...」をクリック。

f:id:ts0818:20180707134830p:plain

「ネットワーク」を選択すると、「アダプター」タブが4つ表示されているので、デフォルトでは、4個まで設定可能ということのようです。(コマンドだと8個でしたが。)

自分の場合、「アダプター1」タブでは、NATの設定情報が表示されています。 

f:id:ts0818:20180707135051p:plain

「アダプター2」タブでは、ホストオンリーアダプターの設定情報が表示されています。

f:id:ts0818:20180707135317p:plain

「アダプター3」「アダプター4」タブには、何も設定されていない状態です。

f:id:ts0818:20180707135516p:plain

f:id:ts0818:20180707135539p:plain

 

話が脱線しました。それでは、次にVBoxManageコマンドで、仮想マシンIPアドレスの一覧を表示。同じく、"CentOS7.4"という名前の仮想マシンを使用。

VBoxManage guestproperty enumerate [仮想マシン名] | grep IP

f:id:ts0818:20180707140026p:plain

VBoxManage guestproperty enumerate [uuid] | grep IP

f:id:ts0818:20180707140214p:plain

⇧  "仮想マシン名"、{uuid}のどちらでも、情報を表示できるようです。

自分の場合ですと、

となっていることから、NAT、ホストオンリーアダプターの2つのネットワークの両方にIPアドレスが存在してますと。 

で、私は思ったわけです。

f:id:ts0818:20180707142638p:plain

そう、「Net/0」「Net/1」とかって、どのNICのことを言ってるの?

というか、

/VirtualBox/GuestInfo/Net/0/V4/IP

の説明がないからよく分からん!ネット上だと、みんな、普通に使ってるが、説明が無さ過ぎて分からんです。

 

結局、VBoxManageコマンドのみだと分からず

コマンドを駆使して、上手いことやれば、IPアドレスが、どのNIC(Network Interface Card)に属しているのか分かるのでしょうが、私にはやり方が分かりませんでした。

結局、ファイルを直に確認しました。

ファイルの場所は、VirtualBoxを普通にインストールしてる場合は、

C:\Users\[ユーザー名]\VirtualBox VMs\[仮想マシン名]\[仮想マシン名].vbox-prev

f:id:ts0818:20180707144836p:plain

にあると思われます。

で、ファイルを開くと、 

f:id:ts0818:20180707145244p:plain

f:id:ts0818:20180707145354p:plain

っていう情報が載っているので、 

<Network>
  <Adapter slot="0" enabled="true" MACAddress="08002737F846" type="82540EM">
    ...省略
  </Adapter>
  <Adapter slot="1" enabled="true" MACAddress="080027B5E2A5" type="82540EM">
    ...省略
  </Adapter>
    ...省略
</Network>
    

の「MACAddress」の値と、

<GuestProperties>
  ...省略
  <GuestProperty name="/VirtualBox/GuestInfo/Net/0/MAC" value="08002737F846" timestamp="1525332748501001200" flags=""/>
  <GuestProperty name="/VirtualBox/GuestInfo/Net/0/Name" value="enp0s3" timestamp="1525332748501001202" flags=""/>
  <GuestProperty name="/VirtualBox/GuestInfo/Net/0/Status" value="Up" timestamp="1525332748501001201" flags=""/>
  <GuestProperty name="/VirtualBox/GuestInfo/Net/0/V4/Broadcast" value="10.0.2.255" timestamp="1525332748500518801" flags=""/>
  <GuestProperty name="/VirtualBox/GuestInfo/Net/0/V4/IP" value="10.0.2.15" timestamp="1525332748500518800" flags=""/>
  <GuestProperty name="/VirtualBox/GuestInfo/Net/0/V4/Netmask" value="255.255.255.0" timestamp="1525332748500518802" flags=""/>
  <GuestProperty name="/VirtualBox/GuestInfo/Net/1/MAC" value="080027B5E2A5" timestamp="1525332748501001206" flags=""/>
  <GuestProperty name="/VirtualBox/GuestInfo/Net/1/Name" value="enp0s8" timestamp="1525332748501502001" flags=""/>
  <GuestProperty name="/VirtualBox/GuestInfo/Net/1/Status" value="Up" timestamp="1525332748501502000" flags=""/>
  <GuestProperty name="/VirtualBox/GuestInfo/Net/1/V4/Broadcast" value="192.168.33.255" timestamp="1525332748501001204" flags=""/>
  <GuestProperty name="/VirtualBox/GuestInfo/Net/1/V4/IP" value="192.168.33.10" timestamp="1525332748501001203" flags=""/>
  <GuestProperty name="/VirtualBox/GuestInfo/Net/1/V4/Netmask" value="255.255.255.0" timestamp="1525332748501001205" flags=""/>
  ...省略
</GuestProperties>

    

の「name="/VirtualBox/GuestInfo/Net/0/MAC"」の値で一致するものの、「name="/VirtualBox/GuestInfo/Net/0/V4/IP"」のIPv4アドレスといった感じで確認するしかなさそうだったという...。

 

まぁ、結論としては、確かに、CUIでできることは多いんだけど、GUIで確認したほうが早いときもあるよね、っていう。(コマンドを使い慣れれば、CUIのほうが良いんでしょうけど)。

 

というわけで、いまの自分にとって、VBoxManageコマンドは何か微妙でしたというお話でした。

修行を積まねばですね。

今回はこのへんで。