私がVMWAREワークステーションを持っているとしましょう(Windowsを推測し、Windowsによってホストされています)。ホスティングマシンのホスト名を受け取る方法はありますか?そして、 このリンク のようにホストマシン上で物事を変更することなく。
これを行うには、machine.idを介してホストからゲストに文字列を渡します。ホスト(すべてのVMの.vmxファイルでも)を変更する必要があり、ホストのホスト名を自動的に検出することはありませんが、機能します。ホストで、問題のVMの電源を切った状態で、VMの.vmxファイルを編集します。次のような行を見つけるか追加します。
machine.id = "<string>"
セットする <string>
サーバーの名前を示す識別文字列に等しい。これは、ホスト名の場合もあれば、短縮バージョンの場合もあります。また、必要に応じて、意味がわかっている限り、理解できないコードの場合もあります。ただし、.vmxファイルに次のような行がある場合
isolation.tools.machine.id.get.disable = TRUE
文字列の受け渡しは機能しないため、この行が存在する場合は、文字列を削除/コメントするか、値をFALSE
に設定することをお勧めします。
ゲストOSで、VMware Toolsがインストールされている場合は、これを実行できます(Linuxゲストの場合)。
vmware-guestd --cmd 'machine.id.get'
または(私が試したことのないWindowsゲストの場合):
VMwareService --cmd machine.id.get
これは古いスレッドですが、まだ興味がある場合は、上記の「thomas lee」の回答は、最近のバージョンのVMWareワークステーションおよびVMWare Fusionで機能します。値を取得するための新しいコマンドは
rpctool machine.id.get
これをFusionのマネージドVMのデプロイで使用して、マシン名が最初の起動時に自動設定されるようにします。ありがとうトーマス.....
ゲストオペレーティングシステムに PowerCLI をインストールできる場合は、スクリプトが実行されているVM)を検索することで、ESXホスト情報にアクセスできます。
Connect-VIServer -Server <myvcenterserver>
$myVM = Get-VM -Name $(dir env:COMPUTERNAME).Value
$myVM.Host.Name
注:これは、ゲストがvCenterのVM名と同じホスト名を持っていることを前提としています。
Linuxゲスト(OPはWindowsと述べています)の場合、 pyVmomi Pythonモジュールを使用して同様のルックアップを実行します。
原則として-いいえ。
ただし、悪意のあるゲストOSがVMサンドボックスをバイパスすることを可能にする特定の脆弱性が存在する(または存在する)可能性があります。たとえば、 Blue Pill)を読んでください。 。研究者自身のブログで詳細を読むこともできます Joanna RutkowskaによるInvisibleThings 。
もちろん、これらは概念実証にすぎませんが、ソフトウェアに実装されているセキュリティはソフトウェアのバグの影響を受けます...
これを行うにはおそらくいくつかの方法があると思いますが、2つ考えられます。1つはゲストにViXをインストールし、ホスト名を指定せずにホストに接続することです(Googleの「ViXリファレンス」を参照してください。一般的なタスク」)次に、Vix_CopyFileFromHostToGuest()
を使用してファイル/etc/vmware/esx.conf
をコピーします。もう1つは、ゲストからホストへのある種のネットワーク接続を作成することです(私はssh
を使用しましたが、ホスト名またはIPがわからない場合でも、上記のViX接続を実行してジョブをディスパッチできます。しばらく時間がかかります)、ゲストでnetstat -a
と言います。 netstat
出力には、解決可能な場合、ホスト名が含まれます。
ネットワーク上に事実上2台のコンピューターがあります。仮想NICにプライベートネットワーク/ NATスタイルのセットアップの1つを使用する場合、ホストにはかなり予測可能なIPアドレスがあるため、他の方法と同じように、多くのリモート管理アプローチのいずれかを使用して要求できます。 。
ゲストOSが1つしかない場合は、ゲストのIPアドレスと同じ先頭の24ビットですべてのIPアドレスを試すだけで、アドレスを推測する手間が省けます。
VSphereでは