仮想マシンで実行されているオペレーティングシステムに実際に入ることなく、VMware Fusionを使用して仮想マシンのIPを決定できますか?VMware Fusionソフトウェア自体で仮想イメージに対して発行できるメニューオプション、コマンドラインなどを探しています。
ありがとう-アドロン
仮想マシンで実行されているオペレーティングシステムに実際に入ることなく、VMware Fusionを使用して仮想マシンのIPを決定できますか?VMware Fusionソフトウェア自体で仮想イメージに対して発行できるメニューオプション、コマンドラインなどを探しています。
ありがとう-アドロン
回答:
IPアドレスは、純粋にOSの責任です。したがって、OSを保持する仮想フレームワークは、Hyper-VやVMwareの追加ゲストツールなどのフレームワークに共生的な追加がない限り、TCP / IPスタックについては認識しません(以下のコメントのtodda.speot.isに感謝します) 。最初に起動せずにVM上のファイルを参照するのと大差ありません。
VMがDHCPに依存している場合は技術的には、あなたは可能性が IPがどうなるかの良いアイデアを得るために、仮想NICのMACアドレスに配られた最後のリースのためのあなたのDHCPサーバー(おそらくあなたのLANのルーター)を検索、おそらくことを次回起動するとき。これは、リース履歴を見たときとVMが起動したときに、同じIPが別のデバイスに渡されなかったと仮定しています。
VMWareは、当然のことながら、このための組み込みツールを提供しますvmrun
。/Applications/VMware Fusion.app/Contents/Library/vmrun
Fusionの他のリリースでは多少動きましたが、それはまだ下にあります。
🍺 vmrun list
Total running VMs: 1
.docker/machine/machines/myvm.vmx
🍺 vmrun getGuestIPAddress ~/.docker/machine/machines/myvm.vmx
172.16.213.128
vmrun
デフォルトで私のMacのPATHにあるのでvmrun getGuestIPAddress "$(vmrun list | grep vmx)"
、引用符を含めてください!
誰かに役立つ場合のヒントを次に示します。avahi-daemon
VMにインストールします。これは、ホスト名を経由して接続することができvmname.local
、vmname
仮想マシンの名前です。私の場合、VMの名前はbaremetal
、ホスト上で実行できます。
ssh baremetal.local
VMのIPを知る必要はありません。:)
avahi-daemon
ですが、利用できないオペレーティングシステムを実行するVMについてはどうでしょうか。たとえば、Windowsが思い浮かびます... :
可能です-少なくとも、一般的なケースでは、ゲスト用にNATスタイルのネットワークが構成されています。VMWareはNAT-ingを提供しているため、現在NAT-ingされているアドレスを通知できる必要があります。何かvmrun list
がこの情報を出力するはずです。それは欠陥ではありません...
しかし、いずれにせよ、とにかく見つける方法は次のとおりです。まず、ifconfig
お使いのMac で実行します(おそらく、ipconfig
Windowsでも同じことをしますが、私はテストしていません)。これにより、マシン上のすべてのネットワークインターフェイス(物理および仮想)が一覧表示されます。vmnet-onesを探します。私のMacでは、これにより以下が生成されます。
% ifconfig | grep -A2 ^vmnet
vmnet1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 00:50:56:c0:00:01
inet 192.168.82.1 netmask 0xffffff00 broadcast 192.168.82.255
vmnet8: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 00:50:56:c0:00:08
inet 192.168.123.1 netmask 0xffffff00 broadcast 192.168.123.255
したがって、ゲストのIPは、2つのVMプライベートネットワークのいずれか(192.168.82.0/24または192.168.123.0/24)にあります。ホストには、幸運な人が1人だけ、または2人以上がいる場合があります。すべてをチェックする必要があります。コマンドラインで直接入力した非常に単純なtcshスクリプトを次に示します。vmnetによって管理されるすべてのクラスCプライベートネットワークの各アドレスにpingを試行し、pingが成功すると終了します。この-W 500
オプションは、応答を0.5秒だけ待機するようにpingに指示し(おそらく、さらに少なく使用できます)、-c 1
正確に1つのパケットを送信するように指示します。
% set i=2
% while ( $i < 255 )
while? ping -W 500 -c 1 192.168.82.$i && break
while? ping -W 500 -c 1 192.168.123.$i && break
while? @ i++
while? end
上記の小さなスクリプトは、存在しないアドレスに到達しようとして失敗したすべての試みをリストするためにしばらく実行されました。
PING 192.168.82.2 (192.168.82.2): 56 data bytes
--- 192.168.82.2 ping statistics ---
1 packets transmitted, 0 packets received, 100.0% packet loss
PING 192.168.123.2 (192.168.123.2): 56 data bytes
...
最終的に成功して終了するまで:
64 bytes from 192.168.123.130: icmp_seq=0 ttl=64 time=0.307 ms
--- 192.168.123.130 ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
Voilà、私はゲストにsshすることができました:
% ssh 192.168.123.130
Password:
今では、実行中のゲストは1人だけでした。したがって、pingに応答する最初のIPアドレスは正しいものでした。一度に複数のゲストを実行する場合、同じまたは同様のpingコマンドを使用して、そのような有効なプライベートIPアドレスすべてのリストを作成し、正しいゲストになるまですべて試してください。
(そして、とにかく、NATベースのアドレスの場合、.130は良い推測です。しかし、私は確かに言うことができません。)
nmap -sP 192.168.123.*
Mikhail T.が言ったように、「VMWareはNAT-ingを提供しているため、現在のNAT-ingのアドレスを教えてくれるはずです。」確かに:
VMware Fusion 6のインストールでは、vmnet-dhcpd
デーモンはリースをfilesに書き込みます/var/db/vmware/vmnet-dhcpd-vmnetX.leases
(「X」は1および8)。経験的に:-)探す必要があるのはvmnet8であることを確認しました。リースファイルからの抜粋を次に示します/var/db/vmware/vmnet-dhcpd-vmnet8.leases
。
lease 192.168.177.129 {
starts 1 2014/02/17 09:34:19;
ends 1 2014/02/17 09:36:56;
hardware ethernet 00:0c:29:2b:2b:10;
client-hostname "ubuntu";
}
client-hostname
VMの名前で、単語の後の数字がlease
そのIPです。これらのエントリを解析するか、単に最新のエントリを見ることができます。探しているリースがまだ有効であることを確認してください。
これに対する私の解決策は:
VMwareツールをインストールしたら、CentOSからフォルダー(任意のフォルダー)にアクセスできるように、共有を構成します。次に、/ etc / sysconfig / network-scripts / ifup-postを変更して、現在の日付とIPアドレスをこの共有フォルダー内のファイルに追加します。
これを行う方法:
変更:/ etc / sysconfig / network-scripts / ifup-post
ifup-postの最後の行の前にこれを追加します( "exit 0"):
date >> /path/to/shared/folder/guest_ip.log
ifconfig >> /path/to/shared/folder/guest_ip.log
これにより、ネットワークが起動するたびに、guest_ip.logに日付とifconfigの戻り値が追加されます。
私の場合、自宅と職場の間は常に192であることがわかっているため、IPアドレスで192のプレフィックスをgrepすることにしました。これは、上記を次のように調整することで実行できます。
date >> /path/to/shared/folder/guest_ip.log
ifconfig | grep 192 >> /path/to/shared/folder/guest_ip.log
VMコンソールipconfig
(VMがWindowsのifconfig
場合)または(VMがLinuxの場合)で実行します。
IP of eth0
は、探しているIPアドレスです。
Ubuntu 15.04でVMPlayerを実行しているときに同じ問題が発生しました。私の仮想マシンはNATに設定されており、GUIにログインしてVMでifconfigを実行することでIPアドレスを判別できましたが、pingまたはsshを実行できませんでした。
VMPlayerのインストール時に判明しましたが、vmnet1およびvmnet8アダプターでdhcpを有効にしませんでした。解決策は、ubuntu guiを使用して「接続の編集」でネットワーク接続を編集することでした。イーサネットの下でvmnet1を見つけ、編集ボタンを押します。IPv4設定で、DHCPを有効にし、保存して再起動します。
コマンドラインでifconfigを実行すると、vmnet1にIPアドレスがあることがわかります。ホストからnat-ed VMへのSSH接続も機能するようになりました。
vmrun(バージョン1.14.4 build-3204469)のマンページから:
getGuestIPAddress Path to vmx file Gets the IP address of the guest
[-wait]
ただし、これを機能させるには、ゲストOSにVMware Toolsスイートをインストールする必要があり、ゲストOSにログインせずにこの手順を実行することはできません。ツールを「ベースイメージ」にインストールし、クローン作成によって新しいイメージを作成できます。次に、上記のコマンドを使用して、新しく作成されたVMのIPアドレスを取得できます。
arp -a| grep vmnet
? (172.16.65.132) at 0:c:29:83:1:e0 on vmnet8 ifscope [ethernet]