私は、開発用の仮想マシンの利点を長く認識しており、どこでもそれらを使用しています。 その結果、ブランチとプロジェクトが異なる5〜10台の仮想マシンを所有しています。 そのうちのいくつかは常に実行されています。
それらの90%はヘッドレスモードで実行されます。 IPを動的に取得します。 静的は常に制御することはできず、他の制限もあります。 したがって、結果-特定のアドレスではどの仮想マシンが起動するかはわかりません。
この場合、仮想マシンを起動する順序は次のとおりです。
1.通常モードで起動します
2.アドレスのifconfig / ipconfigを調べます
3.消す
4.ヘッドレスで実行し、アドレスが同じであることを望みます
これに出会ったと思います。 そうでない場合は、次の投稿に進むことができます。 魔法の理論や特別なコードはありません。 カットの下-シンプルで既製のソリューション。 この小さな日常のタスクに精通している人のために。
VBトラッカーには、対応する機能要求があります。 しかし、それは「私のために働く」として閉じられています。 このソリューションのコードは次のとおりです。
VBoxManage guestproperty enumerate {`VBoxManage list runningvms | awk -F"{" '{print $2}'` | grep \ IP | awk -F"," '{print $2}' | awk '{print $2}'
解決策は「Linuxのみ」ですが、これは私には適していません。 他に特に美しいソリューションは見つかりませんでした;独自のソリューションを作成することにしました。
実行中のすべての仮想マシンとそれらのすべてのネットワークアドレスをリストするnode.js用の小さなスクリプト 。 最初に、実行中のマシンのリストを取得し、その後、各マシンのコピーを取得します。
部分リスト
exec("vboxmanage list runningvms", function (err, stdout, stderr) { if (stdout) { var vmNames = stdout.match(/"([^"]*)"/g); if (vmNames) { for (var x = 0; x < vmNames.length; x++) { var vmName = vmNames[x]; (function (vmName) { exec("VBoxManage guestproperty enumerate " + vmName, function (err, stdout, stderr) { getVmIps(err, stdout, stderr, vmName) }); })(vmName); } } else { console.log("No running VMs"); } } else { console.log(stderr); } });
「node vmip」で始まり、次のように表示されます。
Somemachine
192.168.13.188
U3
10.0.2.15
192.168.13.29
192.168.56.101
XP
192.168.56.102
10.0.2.15
このスクリプトは、使用済みのWindows / OS Xでテストされています。完全に美しさがなく、厳しい実用性に満ちています。 需要があれば、補充されます。