2012-10-13 13 views
7

私は質問には何の説明も必要と思わない。 私はネットワークをシミュレートするために仮想マシンを起動できるソフトウェアを書いています。ソフトウェアがすでに仮想マシン上で動作している場合は、この機能を無効にしたいと考えています。スクリプトが仮想マシン上で実行されているかどうかを検出する方法は?

私はすでにこの記事を読んでいます:How to detect if my application is running in a virtual machine? しかし、私はLinux上でそれを行う必要があり、そのポストはWindowsのみをカバーしています。

私はPerlでそれをやっているので、Perlという質問にタグ付けしていますが、おそらく、procなどにファイルがあり、それはすべての言語で同じです。私は実際には分かりません。

VirtualBoxとKVMを主に検出することに興味があります。使用しているVMと同じです。

だから、どんな提案ですか?

+0

* *仮想マシンソフトウェアをお使いですか?命令は、おそらく異なるVMによって異なります。 – nneonneo

+0

@nneonneo、質問に追加されました。 – Zagorax

+0

なぜあなたは尋ねますか?理想的なVMは、定義すると実際のマシンのように動作する必要があるため、検出できません。 –

答えて

11

ゲストOSとしてLinuxを実行するVMwareおよび仮想ボックス仮想マシンに特有のことを話します。 以下のコマンドを実行すると、基本となるハードウェアが仮想マシンであることを証明するVMware/VirtualBoxであることがわかります。バーチャルボックスのゲストのために

# dmidecode | grep -i product 
     Product Name: VMware Virtual Platform 

:VMwareゲストのために

# dmidecode | grep -i product 
    Product Name: VirtualBox 

"dmidecodeは、" Linuxのシステムコマンドです。スクリプトの最初にperlをdmidecodeで実行し、値を抽出することができます。仮想マシンの場合、スクリプトはそれ以上実行することなく終了する必要があります。

上記のコマンドの戻り値を得るために、他のハイパーバイザーをご用意できません。

これが役に立ちます。

関連する問題